【Linux】MySQL数据库的使用

【Linux】MySQL数据库的使用

  • 一、访问MySQL数据库
  • 二、创建及删除库和表
    • 1、创建新的库
    • 2、创建新的表
    • 3、删除一个数据表
    • 4、删除一个数据库
  • 三、管理表中的数据记录
    • 1、插入数据记录
    • 2、查询数据记录
    • 3、修改数据记录
    • 4、删除数据记录
  • 四、数据库用户授权
    • 1、授予权限
    • 2、查看权限
    • 3、撤销权限

linux中部署MySQL详见我的上一篇博文:
Ubuntu22部署MySQL5.7详细教程

本篇文章将介绍在Ubuntu中如何使用MySQL数据库。

一、访问MySQL数据库

首先使用root用户登录MySQL

mysql -u root -p

验证成功以后将会进入提示符为‘mysql>”的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。
在这里插入图片描述
每条MySQL操作语句以分号 ‘;’ 表示结束,输入时可以不区分大小写

status;表示查看当前数据库服务的基本信息。

status;

在这里插入图片描述

show databases;表示用于查看当前MySQL服务器中包含的库。

show databases;

经初始化后的MySQL服务器,默认建立了四个库:test.mysql.information_schema和performance_schema(其中mysql库是mysql正常运行所需的库,其中包含了用户认证相关的表)。
在这里插入图片描述
使用Navicat远程连接数据库可以看到这四个库
在这里插入图片描述
show tables;用于查看当前所在的库中包含的表。 在操作之前,需要先使用USE语句切换到所使用的库,例如,执行以下操作可以显示mysql库中包含的所有表。

use mysql;
show tables;

在这里插入图片描述
describe用于显示表的结构,即组成表的各字段(列)的信息。需要指定“库名.表名” 作为参数;若只指定表名参数,则需先通过USE语句切换到目标库。 例如,执行以下操作可以查看mysql库中的user表的结构。与直接执行“DESCRIBE mysql.user;’”语句的效果相同。

use mysql;
describe user;

在这里插入图片描述
在“mysql>”操作环境中,执行 “exit”或“quit”命令 可以退出mysql命令工具,返回原来的Shell环境。

二、创建及删除库和表

1、创建新的库

CREATE DATABASE语句:用于创建一个新的库,需指定数据库名称作为参数。 例如,执行以下操作可以创建一个名为auth的库。

create database auth;

在这里插入图片描述
刚创建的数据库是空的,其中不包含任何表,在数据库存放目录下会自动生成一个与新建的库名相同的文件夹。

使用以下命令可以查看数据库存放目录。

SHOW VARIABLES LIKE 'datadir';

在这里插入图片描述
可见在数据库存放目录下新增了一个auth文件夹。
在这里插入图片描述

2、创建新的表

CREATE TABLE 语句:用于在当前库中创建新的表,需指定数据表名称作为参数,并定义该表格所使用的各字段,基本格式如下所示。

CREATE TABLE 表名 (字段1名称 类型, 字段2名称 类型, ..., PRIMARY KEY (主键名))

创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息,例如,若要创建一个包含用户名、密码字串的用户验证表,应先分析表格结构。

用户验证表内容

用户名密码字串
zhangsan123456
lisi654321

上述表格中,“用户名”为不超过16字节的字符串,不能为空;“密码字串”为不超过48个字符的字符串(插入记录时使用MySQL的函数加密)。默认值为空字串。考虑到字符集兼容性,最好不要使用中文字段名,改用user_name,user_passwd分别表示用户名、密码字串,表格中不能拥有同名的用户。因此可将 user_name作为主键。

针对上述分析结果,可以在auth库中按如下操作创建users表,其中,字段定义部分的DEFAULT 语句用于设置默认的密码字串,PRIMARY语句用于设置主键字段名。

USE auth;
CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));

在这里插入图片描述
在Navicat中刷新连接可以看到新增的auth库和users表。
在这里插入图片描述

3、删除一个数据表

DROP TABLE语句:用于删除库中的表,需要指定“库名.表名”作为参数;若只指定表名参数, 则需先通过执行“USE”语句切换到目标库。

例如,执行以下操作可以删除auth库中的users表。

DROP TABLE auth.users;

4、删除一个数据库

DROP DATABASE语句:用于删除指定的库,需要指定库名作为参数。

例如,执行以下操作可以删除名为auth的库。

DROP DATABASE auth;

三、管理表中的数据记录

1、插入数据记录

INSERT INTO语句:用于向表中插入新的数据记录,语句格式如下所示。

INSERT INTO 表名(字段1, 字段2, ...) VALUES(字段1的值, 字段2的值, ...)

执行以下操作将会向 auth 库中的 users表插入一条记录:用户名为“zhangsan”,对应的密码为 “123456”,需注意的是,VALUES部分的值应与前面指定的各字段逐一对应。

USE auth;
INSERT INTO users(user_name, user_passwd) VALUES('zhangsan', PASSWORD('123456'));

在这里插入图片描述

在插入新的数据记录时,如果这条记录完整包括表中所有字段的值,则插入语句中指定字段的 部分可以省略。例如,执行以下操作也可以向auth库中的user表插入一条新的记录:用户名为“lisi” 对应的密码为“654321”。

INSERT INTO users VALUES('lisi', PASSWORD('654321'));

在这里插入图片描述

2、查询数据记录

SELECT语句:用于从指定的表中查找符合条件的数据记录。 MySQL数据库支持标准的SQL查询语句,语句格式如下所示。

SELECT 字段名1, 字段名2, ... FROM 表名 WHERE 条件表达式

表示所有字段时,可以使用通配符“*”,若要显示所有的数据记录,则可以省略WHERE条件子句。 例如,执行以下操作可以查看auth库中users表内的所有数据记录,其中由于密码字串已加密,因此不会直接显示出实际的密码内容。

SELECT * FROM auth.users;

在这里插入图片描述
当需要根据特定的条件查找记录时,WHERE条件子句是必不可少的。 例如,若要查找users表 中用户名为“zhangsan”的记录,显示其中用户名,密码字段的信息,可以执行以下操作。

SELECT user_name, user_passwd FROM auth.users WHERE user_name = 'zhangsan';

在这里插入图片描述

3、修改数据记录

UPDATE语句:用于修改、更新表中的数据记录,语句格式如下所示。

UPDATE 表名 SET 字段名1=字段值1[字段名2=字段值2] WHERE 条件表达式

执行以下操作可以修改users表中用户名为“lisi”的记录,将密码字串设为空值,验证记录内容。可以发现 lisi 用户的密码串值已变为空白。

UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name='lisi';
SELECT * FROM auth.users;

在这里插入图片描述
在MySQL数据库服务器中,用于访问数据库的各种用户(如root)信息都保存在mysql库的user表中,熟练的管理员可以直接修改其中的数据记录。例如,以下操作可以将数据库用户root的密码设为“123457”,当再次使用“mysql-u root-p”访问MySQL数据库服务器时,必须使用此密码进行验证。FLUSH PRIVILEGES;用于刷新用户授权信息。

UPDATE mysql.user SET password=PASSWORD('1234567') WHERE user='root';
FLUSH PRIVILEGES;

若是在 Linux 命令行环境中执行,还可以使用mysqladmin 工具来设置密码,命令格式为 “mysqladmin-u root-p“旧密码password“新密码“。例如,执行以下操作可将数据库用户root 的密码设置为“123456”。

mysqladmin -u root -p '1234567' password '123456'

4、删除数据记录

DELETE语句:用于删除表中指定的数据记录。语句格式如下所示。

DELETE FROM 表名 WHERE 条件表达式

执行以下操作可以删除users表中用户名为“lisi”的数据记录,验证记录内容可以发现,lisi用户的数据记录已经消失。

DELETE FROM auth.users WHERE user_name='lisi';
SELECT * FROM auth.users;

在这里插入图片描述
在MySQL数据库服务器中,默认添加了从本机访问数据库的来宾用户(user、password均为空)。基于数据库安全性考虑,应该删除这些来宾用户。

执行以下操作显示user字段为空的用户记录,并用DELETE 语句进行该用户记录的删除。

SELECT user,host FROM mysql.user WHERE user='';
DELECT FROM mysql.user WHERE user='';

四、数据库用户授权

1、授予权限

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户,否则,GRANT语句用于修改用户信息,语句格式如下所示。

GRANT 权限列表 ON 库名.表名 TO 用户名@来源地址 [IDENTIFIRF BY '密码']
  • 权限列表用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update"。使用 “all”表示所有权限 ,可授权执行任何操作。
  • 库名.表名:用于指定授权操作的库和表的名称,其中可以使用通配符 “*” 。例如,使用 “auth.*” 表示授权操作的对象为auth库中的所有表。
  • 用户名@来源地址用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。 来源地址可以是域名,IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.bdqn.com”,“192.168.1.%”等。
  • DENTIFEDBY用于设置用户连接数据库时所使用的密码字符串。 在新建用户时,若省略 “IDENTIFEDBY”部分,则用户的密码将为空。

执行以下操作可以添加一个名为“xiaoqi”的数据库用户,并允许其从本机访问,对auth库中的所有表具有查询权限,验证密码为“123456”。使用GRANT语句授权的用户记录,会保存到mysql 库的user、db、tables_priv等相关表中,无须刷新即可生效。

GRANT select ON auth.* TO 'xiaoqi'@'localhost' IDENTIFIED BY '123456';

在这里插入图片描述
切换到其他Shell终端,以用户xiaoqi的身份连接数据库,当执行授权的数据库操作时将被允许, 而执行非授权的数据库操作时将被拒绝。例如,允许用户xiaoqi 查询auth 库中 users表的数据记录, 但禁止查询其他库中的表的记录。

用户xiaoqi登录数据库

mysql -u xiaoqi -p

在这里插入图片描述

验证授权的访问操作

SELECT * FROM auth.users;

在这里插入图片描述

验证非授权的访问操作

SELECT * FROM mysql.user;

在这里插入图片描述

在企业服务器的应用中,数据库与网站服务器有时候是相互独立的。因此在MySQL服务器中,应根据实际情况创建新的用户授权,允许授权用户从网站服务器访问数据库。通常的做法是,创建一个或几个网站专用的库,并授予所有权限,限制访问的来源IP地址。

例如,执行以下操作可以新建bdqn库,并授权从IP地址为192.168.4.19的主机连接,用户名为“dbuser”,密码为“pwd@123”。允许在bdqn库中执行所有操作。

CREATE DATABASE bdqn;
GRANT all ON bdqn.* TO 'dbuser'@'192.168.4.19' IDENTIFIED BY 'pwd@123';

在这里插入图片描述

2、查看权限

SHOW GRANTS语句:专门用来查看数据库用户的授权信息,通过FOR子句可指定查看的用户对象(必须与授权时使用的对象名称一致)语句格式如下所示。

SHOW GRANTS FOR 用户名@来源地址

执行以下操作可以查看用户dbuser从主机192.168.4.19访问数据库时的授权信息。其中USAGE权限对应的授权记录中包含了用户的连接密码字串。

SHOW GRANTS FOR 'dbuser'@'192.168.4.19';

在这里插入图片描述

3、撤销权限

REVOKE语句:用于撤销指定用户的数据库权限,撤销权限后的用户仍然可以连接到MySQL服务器,但将被禁止执行对应的数据库操作。 语句格式如下所示。

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址

执行以下操作可以撤销用户xiaoqi从本机访问数据库auth的所有权限。

REVOKE all ON auth.* FROM 'xiaoqi'@'localhost';
SHOW GRANTS FOR 'xiaoqi'@'localhost';

在这里插入图片描述

参考资料:
Linux——MySQL数据库的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/261507.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT丨成像光谱遥感技术中的AI革命:ChatGPT应用指南

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用,人工智…

互联网高科技公司领导AI工业化,MatrixGo加速人工智能落地

作者:吴宁川 AI(人工智能)工业化与AI工程化正在引领人工智能的大趋势。AI工程化主要从企业CIO角度,着眼于在企业生产环境中规模化落地AI应用的工程化举措;而AI工业化则从AI供应商的角度,着眼于以规模化方式…

http和https的区别(简述)

HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)都是用于在客户端和服务器之间传输数据的协议,但它们在安全性方面有重要的区别。 1.HTTP: 概述: HTTP是一种用于传输超文本的协议(超文…

SAP MIGO发货过账的时候批次库存确定:事务码MBC1进行激活即可

事务码: MBC1 ~ MBC3 使用MBC1按照工厂层级进行激活 接下来MIGO发货过账的时候就可以使用批次库存确定了,点击下图中圈出来的库存确定按钮

Git详解及 github与gitlab使用

目录 1.1 关于版本控制 1.1.1 本地版本控制 1.1.2 集中化的版本控制系统 1.1.3 分布式版本控制系统 1.2 Git简介 1.2.1 Git历史 1.3 安装git 1.3.1 环境说明 1.3.2 Yum安装Git 1.3.3 编译安装 1.4 初次运行 Git 前的配置 1.4.1 配置git 1.4.2 获取帮助 1.5 获取 G…

使用python构建Android,探索跨平台应用开发Kivy框架

使用python构建Android,探索跨平台应用开发Kivy框架 1. 介绍Kivy框架 Kivy是什么? Kivy是一个开源的Python跨平台应用程序开发框架,旨在帮助开发者快速构建创新的、可扩展的移动应用和多点触控应用。Kivy采用MIT许可证,允许开发…

适用于 Windows 的 12 个最佳 PDF 编辑器

PDF文档的普遍存在按理说,PDF文档的可读性和可移植性受到专业文档的青睐。 然而,PDF格式的可食用性是一大缺陷。幸运的是,各种 PDF 编辑工具和软件使 PDF 的编辑变得更加容易,这篇文章旨在帮助我们的读者找到其中最好的工具和软件…

【码银送书第十二期】世界顶级名校计算机专业,都在用哪些书当教材?

清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么?今天我们来盘点一下那些世界名校计算机专业采用的教材。 01《深入理解计算机系统》 (原书第3版) 作者:兰德尔 E.布莱恩特 大卫 R. 奥哈拉伦 推荐理由:卡内基…

备战蓝桥杯---动态规划(应用2(一些十分巧妙的优化dp的手段))

好久不见,甚是想念,最近一直在看过河这道题(感觉最近脑子有点宕机QAQ),现在算是有点懂了,打算记录下这道又爱又恨的题。(如有错误欢迎大佬帮忙指出) 话不多说,直接看题&…

实习日志18

1.刚弄好数据库就破大防了 1.1.图片显示,PDF不显示 我的图片是base64编码显示,pdf是用url显示 首先想到url出问题了 感觉可能是之前的那个问题,到服务器上url变回去了 活字格V9获取图片失败bug,报错404,了解存储路…

中科大计网学习记录笔记(十四):多路复用与解复用 | 无连接传输:UDP

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…

【转载】企业资产收集与脆弱性检查工具

简介 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用,致力于协助用户管理互联网资产攻击面的 SaaS 化订阅服务产品。可实现对备案域名、子域名、IP、端口、服务、网站、漏洞、安全风险等场景进行周期性监控,支持多维度分析攻击面。利用可视化…

多个.C 文件关于全局变量如何使用

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

pytest基本应用

文章目录 1.pytest安装2.用例运行规则3.常用参数断言运行参数用例控制setup和teardownini配置文件 4.常用插件5.pytest高阶用法用例跳过参数化 6.pytest之Fixture使用fixture使用装饰器usefixtures 7.pytest之conftest.py8.conftestfixtureyieldyield介绍前后置使用 1.pytest安…

LVGL8.1在Windows显示图片

1、将这些宏的值改成1,以便支持这些格式: 2、 这两个地方: LV_USE_FS_WIN32 设置符号,大小写字母、“\”、“”等符号都可以。 LV_FS_WIN32_PATH 为一个目录,图片放入此目录。 3、载入图片: “M:color.pn…

TestNG与ExtentReport单元测试导出报告文档

TestNG与ExtentReport集成 目录 1 通过实现ITestListener的方法添加Reporter log 1.1 MyTestListener设置 1.2 输出结果 2 TestNG与ExtentReporter集成 2.1 项目结构 2.2 MyExtentReportListener设置 2.3 单多Suite、Test组合测试 2.3.1 单Suite单Test 2.3…

问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

k8s版本升级后,pod一直无法被调度

故障现象:升级完k8s后,部署pod时发现pod无法被调度到node节点,pod的状态一直是pending状态。 报错内容:User-scheduler pods fail with “no kind “KubeSchedulerConfiguration” is registered for version “kubescheduler.co…

HCIP---OSPF综合实验

一:实验要求 1、R4为ISP,其上只能配置IP地址,R4与其所有直连设备间均使用公有IP 2、R3-R5/6/7为MGRE环境,R3为中心站点 3、整个OSPF环境IP基于R4的环回 4、所有设备均可访问R4的环回 5、减少LSA的更新量,加快收敛…

怿星科技测试实验室(EPT LABS)服务介绍

据中国汽车工业协会数据,2023年我国汽车产销量分别达3016.1万辆和3009.4万辆,年产销量双双创历史新高,汽车行业进入了新时代。新汽车时代下的OEM竞争更激烈,汽车电子架构更复杂,研发周期更短,软件迭代更快&…