MySQL8.0 + 角色管理

MySQL 角色管理

创建角色

create role test_role@'%';

授权角色

grant select,insert,update,delete on testdb.* to test_user;

将角色分配给用户

create user 'test'@'192.168.1.1' identified by '';
create user 'test1'@'192.168.1.2' identified by '';
grant test_user to 'test'@'192.168.1.1','test1'@'192.168.1.2';

激活角色

SET DEFAULT ROLE test_user to 'test1'@'192.168.1.2';
SELECT current_role();

这种"激活"角色的方法可以让用户拥有角色所拥有的权限,但是不难看出来,每次给新建用户绑定一个角色,在新建用户登录之前,都得将该用户激活一下,从操作上看不是特别方便,如何让所有的指定的角色都即时生效呢?

MySQL提供了一个系统参数来解决这个问题,该参数是:

mysql> show variables like '%activate%';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| activate_all_roles_on_login | OFF   |
+-----------------------------+-------+
1 row in set (0.00 sec)
 
 
# 该参数是默认关闭的,直接打开即可。
set global activate_all_roles_on_login=on;
# 持久化
sed -i  '79i\activate_all_roles_on_login                 = on' /data/db/mysql3306/my.cnf
 
# mysql8.0 永久生效,并写入 mysql 的 datadir 的  mysqld-auto.cnf 文件中
set persist activate_all_roles_on_login=on;

撤销角色

REVOKE INSERT, UPDATE, DELETE ON testdb.* FROM test_user;

删除角色

DROP ROLE test_user;

posted @ 2020-02-07 03:14  Carry00  阅读(65)  评论(0编辑  收藏  举报