MySQL_11 用户管理和权限管理

举报
Cyan_RA9 发表于 2023/07/16 12:03:41 2023/07/16
【摘要】 MySQL 第十一节 用户管理和权限管理 内容分享。

目录

一、用户管理

        1.用户介绍 : 

        2.操作指令 : 

        3.代码演示 : 

二、权限管理

        1.MySQL常见权限汇总 :

        2.相关指令 : 

        3.代码演示 : 


一、用户管理

        1.用户介绍 : 

                MySQL中的用户都存储在系统数据库mysql中的user表中,如下图所示 : 

编辑

                user表中,几个比较重要的字段——
                Host : 允许“登录”的位置(IP);localhost表示该用户只允许本机登录;但也可以指定IP地址,eg : 192.168.1.100,192.168.1.%;
                User :  用户名;
                Authentication_string : 加密后的密码,mysql8.0默认是通过caching_sha2_password()函数来加密的。

                Q : 为什么需要进行用户管理?
                A : 当我们做项目开发时,可以根据不同的开发人员,赋予他不同的MySQL操作权限;因此,MySQL数据库的管理员root用户,会根据需要创建不同的用户,并分别赋予相应的权限,供不同人员来使用

        2.操作指令 : 

        1° 创建用户(同时指定密码)——

        CREATE USER '用户名' @ '允许登录的位置' IDENTIFIED BY 'pwd_expr';

        2° 删除用户 ——

        DROP USER '用户名' @ '允许登录的位置';

        3° 修改密码 —— (MySQL8.0)

        ALTER USER '用户名' @ '允许登录的位置' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'pwd_expr';

        PS : 

        MySQL下,认为用户的完整信息由用户名登陆位置组成

        不同的数据库用户,登录到DBMS后,根据相应的权限,可以操作的数据库和数据对象(表,视图,触发器)都不一样

        在创建用户时,若未指定Host,则为%,表示所有IP都有连接权限;同理,在删除用户时,若Host != %,必须在用户信息中明确指定用户的Host值。

        3.代码演示 : 

                创建一个新的用户Ice,密码假设为12345,如下所示 : 

CREATE USER 'Ice'@'localhost' IDENTIFIED BY '12345';

编辑

                尝试登录Ice用户,如下 : 

编辑

                登录成功后,会发现Ice用户可操作的数据库很少,如下图所示  :

编辑

                尝试更改Ice用户的密码,如下 : 

ALTER USER 'ice'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '54321';

                更改密码后,已建立的Ice用户与MySQL的连接将无法重新连接,如下 : 

编辑

                这时,在“编辑连接”中更改当前的登录密码可以重新连接。如下 :

编辑

编辑

                尝试删除Ice用户。 

                删除前,可以在mysql.user表中看到Ice用户存在,如下图所示  :

编辑

                使用DROP USER 指令删除Ice用户 :  

DROP USER 'Ice'@'localhost' ;

                删除成功后,Ice用户在user表中不存在。 

编辑

二、权限管理

        1.MySQL常见权限汇总 :

  • ALL [PRIVILEGES] : 设置除GRANT OPTION之外的所有简单权限
  • ALTER : 允许使用ALTER TABLE
  • ALTER ROUTINE : 更改或取消已存储的子程序
  • CREATE : 允许使用CREATE TABLE
  • CREATE ROUTINE : 创建已存储的子程序
  • CREATE TENPORARY TABLES : 允许使用CREATE TEMPORARY TABLE
  • CREATE USER : 允许使用CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES。
  • CREATE VIEW : 允许使用CREATE VIEW
  • DELETE : 允许使用DELETE
  • DROP : 允许使用DROP TABLE
  • EXECUTE : 允许用户运行已存储的子程序
  • FILE : 允许使用SELECT..INTO OUTFILE和LOAD DATA INFILE
  • INDEX : 允许使用CREATE INDEX和DROP INDEX
  • INSERT : 允许使用INSERT
  • LOCK TABLES : 允许对您拥有SELECT权限的表使用LOCK TABLES
  • PROCESS : 允许使用SHOW FULL PROCESSLIST
  • REFERENCES : 未被实施
  • RELOAD : 允许使用FLUSH
  • REPLICATION CLIENT : 允许用户询问从属服务器或主服务器的地址
  • REPLICATION SLAVE : 用于复制型从属服务器(从主服务器中读取二进制日志事件)
  • SELECT : 允许使用SELECT
  • SHOW DATABASES : SHOW DATABASES显示所有数据库
  • SHOW VIEW : 允许使用SHOW CREATE VIEW
  • SHUTDOWN : 允许使用mysqladmin shutdown
  • SUPER : 允许使用CHANGE MASTER,KILL,PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connectionso
  • UPDATE : 允许使用UPDATE
  • USAGE : “无权限”的同义词
  • GRANT OPTION : 允许授予权限

        2.相关指令 : 

        1° 授予权限

        GRANT purview_list ON 库.对象名 TO '用户名'@'登录位置' [IDENTIFIED BY 'pwd_expr'];
        注意事项——

        ①权限列表中的多个权限使用逗号分隔开,eg : 

        eg1 : GRANT SELECT, DELETE, CREATE ON ...;

        eg2 : GRANT ALL ON...;        //表示授予该用户在该对象上的全部权限。

        ②*.*代表本系统中的所有数据库的所有数据对象(表,视图,存储过程)库.*表示某个指定数据库中的所有数据对象(表,视图,存储过程)

        ③IDENTIFIED BY 可写可不写。若写出,用户存在则修改该用户的密码用户不存在则创建该用户。

        2° 回收权限

        REVOKE purview_list ON 库.对象名 FROM '用户'@'登录位置';

        PS : 

        若权限指令没有生效,可以使用FLUSH PRIVILEGES; 指令来刷新(一般来说都会立即生效,尤其对于高版本的MySQL)。

        3.代码演示 : 

                要求如下——
                ①创建用户five@localhost;
                ②在root用户下为five用户授予一定权限;
                ③在five用户下测试被授予的权限是否生效;
                ④测试five用户未被授予的权限是否生效;
                ⑤回收five用户的权限并删除five用户。

                演示如下——

                ①创建five用户 : 

CREATE USER 'five'@'localhost' IDENTIFIED BY '666';

SELECT * FROM mysql.user;

编辑

                ②在root用户下为five用户分配权限 : 

                假定我们可以使five用户对select_ex数据库中的emp表进行访问,授予five用户查询,修改,和删除数据的权限。如下图所示 : 

编辑
GRANT SELECT,UPDATE,INSERT ON select_ex.emp TO 'five'@'localhost';

                ③登录five用户,查看权限是否生效 : 

编辑

                可以看到,five用户视角下,已经显示有select_ex数据库以及emp表。
                继续,测试被授权的指令能否使用 : 

INSERT INTO emp
		VALUES 
		(6666,'NewBee','Manage',1,'2002-011-11',99999.00,99999.00,10);
		
UPDATE emp
		SET ecareer = 'Boss';
		
SELECT * 
		FROM emp;

编辑

                ④测试five用户能否删除表中的数据 : 

DELETE FROM emp
		WHERE eno = 6666;

                显然无法成功 :  

编辑

                可以继续在root用户下追加权限,使five用户可以进行删除数据的操作 : 

GRANT DELETE ON select_ex.emp TO 'five'@'localhost';

                five用户再次尝试删除数据 : 

DELETE FROM emp
		WHERE eno = 6666;
		
SELECT * FROM emp;

编辑

                ⑤回收five用户的权限并删除five用户 : 

REVOKE INSERT,DELETE,SELECT,UPDATE ON select_ex.emp FROM 'five'@'localhost';

                在five用户下刷新连接,将看不到selec_ex数据库,如下图所示 : 

编辑

                在root用户下删除five用户 : 

DROP USER 'five'@'localhost';

                five用户将无法重新连接。

编辑

        System.out.println("END-------------------------------------------------------------------------------"); 

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。