【Linux】MySQL数据库的使用

4 篇文章 0 订阅
3 篇文章 0 订阅

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数据库的使用

  • 28
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将月藏进诗尾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值