数据库MySQL系统实操实验从安装系统到实际操作全过程,五万字系列六,这不直接学完去学校装杯?

系列链接:

  1. MySQL的安装及数据库的创建和维护
  2. 实验二:数据表的创建与修改管理
  3. 实验三:表数据的查询操作
  4. 实验四:数据插入、修改、删除操作
  5. 实验五:视图的创建与管理
  6. 实验六:MySQL的用户与权限(MySQL5.7版本)
  7. 实验七:自定义函数与存储过程

实验六:MySQL的用户与权限(MySQL5.7版本)

一、实验目的

(1)了解用户与权限的作用
(2)掌握CREATE USER 创建用户
(3)掌握ALTER USER 修改用户
(4)掌握GRANT 授予用户权限

**注意**:MySQL版本有可能会影响执行语句的正常,所以建议版本一致,如果觉得卸载MySQL版本很难并且再安装费老大的劲也没这个必要,所以建议本次实验尽力而为,不能做咱学着看看也是可以的。

二、验证性实验

设计性实验任务如下:

1. MySQL中所有的用户信息都保存在mysql.user数据表中,查看user表,了解常用字段的含义

我才发现可以用sql语句代码块

select * from mysql.user;

在这里插入图片描述

2. 查询user表中默认用户root 的Host和User值

(这两个字段组合保存了客户端访问MySQL服务器的账号字段)
select host,user from mysql.user;

在这里插入图片描述

3. 查询user表中root用户默认的plugin和authentication_string值

(这两个字段值保存了用户身份验证的信息)
SELECT plugin, authentication_string 
FROM mysql.user
where user='root';

在这里插入图片描述
创建用户的语句格式:

CREATE USER [IF NOT EXISTS]
账户名 [用户身份验证选项][, 账户名 [用户身份验证选项]]…
[WITH 资源控制选项][密码管理选项 | 账户锁定选项]

说明:
  • CREATE USER可以一次创建多个用户,多个用户之间使用逗号分隔。
  • 账户名是由“用户名@主机地址”组成。
  • 用户名区分大小写,但是主机地址不区分大小写。
  • 其余选项在创建用户时,若未设置则使用默认值。

4. 创建用户test1,没有密码,没有任何限制。(%表示任何主机)

create user 'test1';

在这里插入图片描述

5. 创建用户test2,密码为222222,该用户只能从本地主机连接MySQL服务器

create user 'test2'@'localhost' identified by'222222';

在这里插入图片描述

6. 查询存储在user表中test2用户的密码(密码是加密后的,看不懂)

select plugin,authentication_string from mysql.user where user='test2';

在这里插入图片描述

7. 同时创建多个用户

create user 'test3'@localhost IDENTIFIED by'333333',
 'test4'@localhost IDENTIFIED by'444444';

在这里插入图片描述

8. 查看用户是否创建成功

select HOST,USER from mysql.user;

在这里插入图片描述

9. 创建本地用户test5,密码555555,限制该用户同时连接服务器的最大数量为2

create user 'test5'@'localhost' IDENTIFIED by'555555' WITH MAX_USER_CONNECTIONS 2;

在这里插入图片描述

10. 查看user表中的max_user_connections字段,看值是否是2

select max_user_connections from mysql.user where user='test5';

在这里插入图片描述

11. 以用户test5连接MySQL服务器来验证此操作

在这里插入图片描述当退出一个客户端再进入就可以了。

12. 创建用户test6,并锁定该用户

create user 'test6'@'localhost' IDENTIFIED by'666666' PASSWORD EXPIRE account lock;

在这里插入图片描述

13. 查看用户test6是否已被锁定

(该用户在登录MySQL服务器,会报‘账户被锁定的错误’)
select account_locked from mysql.`user` where user='test6';

在这里插入图片描述

14. 解锁mysql.user表中被锁定的用户test6.(解锁后该用户在客户端就能连接MySQL服务器了)

alter user 'test6'@'localhost' account UNLOCK;

在这里插入图片描述

15. 修改密码,将test2用户的密码设置为123456

alter user 'test2'@'localhost' IDENTIFIED by '123456'; 

在这里插入图片描述

16. 重命名用户,用Rename User语句,为用户test6重命名为xiaoming

rename user 'test6'@'localhost' to 'xiaoming'@'localhost';

在这里插入图片描述

17. 删除用户test6,并用select语句查看该用户是否删除

drop user if exists 'test5'@'localhost';
select HOST,USER from mysql.user;

在这里插入图片描述

18. 权限管理,查看root用户、test1用户、test2用户被授权情况。

语句格式:SHOW GRANTS [FOR 账户]
SHOW GRANTS FOR 'root'@'localhost';
SHOW GRANTS FOR 'test1';
SHOW GRANTS FOR 'test2'@'localhost';

在这里插入图片描述

19. 权限管理,授予test1用户st.student表的select权限,以及对sno,sname字段的插入权限

语句格式:GRANT 权限类型 [字段列表][, 权限类型 [字段列表]] ... ON [目标类型] 权限级别 TO 账户名 [用户身份验证选项] [, 账户名 [用户身份验证选项]] ... [WITH {GRANT OPTION | 资源控制选项}]
GRANT SELECT,INSERT(sno,sname) ON st.student to 'test1';

在这里插入图片描述

20. 查看test1用户的权限授予情况,方法如下。

show grants for 'test1';

在这里插入图片描述

21. 退出当前root用户,以test1用户登录MySQL服务器(注意test1用户的密码为空),用use命令打开st数据库,输入以下语句,观察结果并截图。

use st;

在这里插入图片描述

select * from student;

在这里插入图片描述

select * from course;

在这里插入图片描述

insert into student(sno,sname) values('1001','test1');

在这里插入图片描述

insert into student(sno,sname,sdept) values('1001','test1','cs');

在这里插入图片描述

21. 退出当前test1用户权限管理,回收test1用户对st.student表中sno,sname字段的插入权限,并查看权限是否被回收。

语句格式: REVOKE 权限类型 [(字段列表)] [, 权限类型[(字段列表)]] … ON [目标类型] 权限级别 FROM 账户名 [, 账户名] … 说明:如果要回收所有权限,则权限类型为ALL或ALL PRIVILEGES ;目标类型为*.*
REVOKE INSERT(sno,sname) ON st.student FROM 'test1';
SHOW GRANTS FOR 'test1';

在这里插入图片描述

22. 刷新用户权限(从系统数据库mysql中的权限表中重新加载用户的权限)。

FLUSH PRIVILEGES;

在这里插入图片描述

三、设计性实验任务如下:

1. 使用root用户创建exam1用户,初始密码设置为123456。

create user 'exam1'@'localhost' identified by'123456';

在这里插入图片描述

2. 让该用户对所有数据库拥有SELECT、CREATE、DROP权限,并且能将权限转授其它用户

(转授权限用with grant option短语,用*.*表不任意数据库下的任意数据表)。
GRANT SELECT,CREATE,DROP ON *.* to email@"localhost" IDENTIFIED by "123456";

在这里插入图片描述

3. 创建exam2用户,该用户没有初始密码。

create user 'exam2';

在这里插入图片描述

4. 用exam2用户登录,将其密码修改为000000。

set password = password('000000');

在这里插入图片描述

5. 用exam1用户登录,为exam2用户设置CREATE和DROP权限。

GRANT CREATE,DROP ON *.* to exam2@"localhost" IDENTIFIED by "000000";

在这里插入图片描述

6. 用exam2用户登录,在st数据库下创建一个t1表,并将其删除,验证其拥有的CREATE和DROP权限。在这里插入图片描述

7. 用root用户登录,收回exam1用户和exam2用户的所有权限。

revoke all on *.* from email@localhost,exam2@localhost;

在这里插入图片描述

8. 删除exam1用户和exam2用户。

在这里插入图片描述

四、观察与思考

  1. 思考如何通过Navicat远程连接指定IP的MySQL服务器?

系列问题6:你能靠,自己,回答上来吗?请把回答留言评论区。
当然若本篇内容对您有所帮助,请三连点赞,关注,收藏支持下。
别问,问就是在这里插入图片描述
创作不易,白嫖很爽,但是求各位手下留情。
如果本篇博客有任何错误或者疏漏,请批评斧正,感激不尽 !

猜你喜欢

转载自blog.csdn.net/qq_45685435/article/details/119464540