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开启角色自动激活

#设置开启
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: 删除表中数据的权限。

你可能感兴趣的:(mysql,mysql)