mysql创建角色并授权给用户

mysql创建角色并授权给用户

CREATE DATABASE testdb;

创建角色

-- 创建角色
CREATE ROLE 'admin';
-- 语法
CREATE ROLE [IF NOT EXISTS] role [, role ] ...

角色授权

-- 角色授权
GRANT ALL  ON testdb.* TO 'admin' WITH GRANT OPTION;
CREATE ROLE 'test';
GRANT SELECT,INSERT,DELETE,UPDATE ON testdb.* TO 'test';
--  语法
GRANT role [, role] ... TO user_or_role [, user_or_role] ...[WITH ADMIN OPTION]

角色授权给用户

创建用户

CREATE USER 'admin'@'%' IDENTIFIED BY '1qaz@wsx';
角色授权给用户
设置用户默认角色的语法
-- 设置默认角色
SET DEFAULT ROLE 'admin' TO  'admin'@'%';
-- 语法
SET DEFAULT ROLE  {NONE | ALL | role [, role ] ...}  TO user [, user ] ...

服务器应视为必需的角色。实际上,这些 角色会自动授予每个用户,尽管 设置mandatory_roles 实际上不会更改任何用户帐户和授予的角色 在系统表中不可见。

mysql8开启角色自动激活
  1. 修改myd.cnf配置文件
    	#设置角色激活开启
    activate-all-roles-on-login=ON
    
  2. 命令手动开启
    这个方式,会在mysql服务重启后失效
    #设置开启
    set global activate_all_roles_on_login=ON;
    -- 查看是否开启
    show variables like 'activate_all_roles_on_login';
    

当这个配置开启,服务器将在账号登录时,自动激活账号被授予所有角色。并且,优先于SET DEFAULT ROLE设置的默认值。

如果禁用activate_all_roles_on_login,服务器只会激活默认角色 。

更换会话的角色
SET ROLE DEFAULT; --激活默认角色
SET ROLE 'role1', 'role2';
SET ROLE ALL; -- 激活所有角色
SET ROLE ALL EXCEPT 'role1', 'role2';
-- 语法
SET ROLE { DEFAULT | NONE| ALL | ALL EXCEPT role [, role ] ...| role [, role ] ...}
设置服务器默认角色(不重要)
SET PERSIST mandatory_roles = '`role1`@`%`,`role2`,role3,role4@localhost';

服务器视为必需的角色。这些 角色会自动授予每个用户,设置mandatory_roles 实际上不会更改任何用户帐户和授予的角色,在系统表中也不可见。

撤销授权

REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';
REVOKE 'role1', 'role2' FROM 'user1'@'localhost', 'user2'@'localhost';
REVOKE SELECT ON world.* FROM 'role3';
-- 语法
REVOKE [IF EXISTS] PROXY ON user_or_role FROM user_or_role [, user_or_role] ...
[IGNORE UNKNOWN USER]

其他相关内容

  • 刷新授权

    flush hosts;
    -- 当修改授权后,使用这个命令来刷新授权。
    FLUSH PRIVILEGES ;
    
  • 查看当前角色

    SELECT CURRENT_ROLE();
    
  • 查看授权

    SHOW GRANTS;
    SHOW GRANTS FOR CURRENT_USER;
    SHOW GRANTS FOR CURRENT_USER();
    SHOW GRANTS FOR 'username'@'%' ; --查看某个用户授权
    
role的值有:
  • ALL PRIVILEGES: 所有权限

  • CREATE: 创建数据库和表的权限。

  • DROP: 删除数据库和表的权限。

  • ALTER: 修改表结构的权限。

  • INSERT: 向表中插入数据的权限。

  • SELECT: 查询表中数据的权限。

  • UPDATE: 修改表中数据的权限。

  • DELETE: 删除表中数据的权限。

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值