Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql8.0.30用户与权限管理

mysql8.0.30用户与权限管理的实践

作者:HappyLearnerL

MySQL8.0新加了很多功能,其中在用户管理中增加了角色的管理,本文主要介绍了mysql8.0.30用户与权限管理的实践,具有一定的参考价值,感兴趣的可以了解一下

用户管理

登录mysql服务器

mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"

下面详细介绍命令中的参数:

创建用户

create user zhang3 identified by '123_qwerQWER'; # 默认hosts是 % 
flush privileges; #立即生效
---------------------------------------------------------
create user 'kangshifu'@'localhost' identified by '123_qwerQWER'; # 创建指定host的用户

在这里插入图片描述

修改用户

update mysql.user set user='li4' where user='zhang3';
flush privileges;

在这里插入图片描述

删除用户

drop user li4; # 默认删除host为%的用户
drop user 'kangshifu'@'localhost'; #指定删除host的用户
flush privileges;
---------------------------------------------------------
delete from mysql.user where host='%' and user='zhang3'; # delete也可以删除用户
flush privileges;

查看用户

select host, user from user;
或
select host, user from mysql.user;

修改用户密码

set password for 'zhang3'@'%'='122_qwerQWER';

权限管理

查看权限

show privileges;

在这里插入图片描述

授予权限的原则

权限控制主要是出于安全因素,因此需要遵循以下几个 经验原则 :

授予权限

注意: 命令行字母可小写

GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令'];

实例如下

 grant select on atguigu.* to zhang3@%;
 grant select on custom.users to 'zhang3'@'%';

查看权限

show grants for 'root'@'%'\G
show grants for 'zhang3'@'%'\G

在这里插入图片描述

收回权限

REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
#收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON *.* FROM joe@'%';
#收回mysql库下的所有表的插删改查权限
REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM joe@localhost;

查看user 信息表结构和信息

desc mysql.user;
select * from mysql.user\G

在这里插入图片描述

在这里插入图片描述

db表

DESCRIBE mysql.db;

其他表信息、

procs_priv表 tables_priv表和 columns_priv表 需要时自行了解

角色管理

创建角色

CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...
CREATE ROLE 'manager'@'localhost';

给角色授予权限

GRANT privileges ON table_name TO 'role_name'[@'host_name'];

查看所有权限

show privileges\G

在这里插入图片描述

查看角色的权限

SHOW GRANTS FOR 'manager';

回收角色的权限

REVOKE privileges ON tablename FROM 'rolename';

删除角色

注意, 如果你删除了角色,那么用户也就失去了通过这个角色所获得的所有权限 。

DROP ROLE role [,role2]...
DROP ROLE 'school_read';

给用户赋予角色

GRANT role [,role2,...] TO user [,user2,...];
GRANT 'school_read' TO 'kangshifu'@'localhost';

激活角色

show variables like 'activate_all_roles_on_login';
SET GLOBAL activate_all_roles_on_login=ON;

这条 SQL 语句的意思是,对 所有角色永久激活 。运行这条语句之后,用户才真正拥有了赋予角色的所有
权限。

在这里插入图片描述

撤销用户的角色

REVOKE role FROM user;
REVOKE 'school_read' FROM 'kangshifu'@'localhost';
SHOW GRANTS FOR 'kangshifu'@'localhost';

设置强制角色(mandatory role)

在这里插入图片描述

 到此这篇关于mysql8.0.30用户与权限管理的实践的文章就介绍到这了,更多相关mysql8.0.30用户与权限管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文