展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

角色管理

  • 创建角色
CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...

# 如果 host_name省略,默认为% , role_name不可省略 ,不可为空
  • 代码案例
CREATE ROLE 'manager'@'localhost';
  • 给角色赋予权限
GRANT privileges ON table_name TO 'role_name'[@'host_name'];
  • 代码案例
GRANT SELECT ON demo.settlement TO 'manager';
GRANT SELECT ON demo.goodsmaster TO 'manager';
GRANT SELECT ON demo.invcount TO 'manager';
  • 查看角色拥有的权限
SHOW GRANTS FOR 'manager';
  • 撤销角色的权限
REVOKE privileges ON tablename FROM 'rolename';
  • 代码案例
# 撤销school_write角色的权限
REVOKE INSERT, UPDATE, DELETE ON school.* FROM 'school_write';
  • 删除角色
DROP ROLE role [,role2]...
  • 代码案例
DROP ROLE 'school_read';
  • 给用户赋予角色
GRANT role [,role2,...] TO user [,user2,...];
  • 代码案例
# 给kangshifu用户添加角色school_read权限
GRANT 'school_read' TO 'kangshifu'@'localhost';
  • 查看用户是否添加角色成功
SHOW GRANTS FOR 'kangshifu'@'localhost';
  • 角色创建并授权后,要赋给用户并处于 激活状态 才能发挥作用

  • 为用户激活角色

SET DEFAULT ROLE ALL TO 'kangshifu'@'localhost';
  • 为多个用户激活该用户下的角色权限
SET DEFAULT ROLE ALL TO
'dev1'@'localhost',
'read_user1'@'localhost',
'read_user2'@'localhost',
'rw_user1'@'localhost';
  • 方式2:对所有角色永久激活
SET GLOBAL activate_all_roles_on_login=ON;

# 查看是否激活成功
show variables like 'activate_all_roles_on_login';
  • 撤销用户角色
REVOKE role FROM user;
  • 代码案例
# 撤销kangshifu用户的school_read角色
REVOKE 'school_read' FROM 'kangshifu'@'localhost';

# 查看是否撤销成功
SHOW GRANTS FOR 'kangshifu'@'localhost';
  • 强制角色
# 强制角色是给每个创建账户的默认角色,不需要手动设置。强制角色无法被REVOKE或者DROP

# 方式一:服务器启动前设置
mandatory_role='role1,role2@localhost,r3@%'

# 方式二:运行时设置
set persist mandatory_roles='role1,role2@localhost,r3@exanple.com';  # 系统重启后仍然有效
set global mandatory_roles = 'role1,role2@localhost,r3@exanple.com';  # 系统重启后失效
posted @ 2022-06-07 16:14  DogLeftover  阅读(29)  评论(0编辑  收藏  举报