mysql创建角色并授权给用户
CREATEDATABASE testdb;
创建角色
-- 创建角色CREATE ROLE 'admin';-- 语法CREATE ROLE [IFNOTEXISTS] role [, role ]...
角色授权
-- 角色授权GRANTALLON testdb.*TO'admin'WITHGRANTOPTION;CREATE ROLE 'test';GRANTSELECT,INSERT,DELETE,UPDATEON testdb.*TO'test';-- 语法GRANT role [, role]...TO user_or_role [, user_or_role]...[WITH ADMIN OPTION]
角色授权给用户
创建用户
CREATEUSER'admin'@'%' IDENTIFIED BY'1qaz@wsx';
角色授权给用户
设置用户默认角色的语法
-- 设置默认角色SETDEFAULT ROLE 'admin'TO'admin'@'%';-- 语法SETDEFAULT ROLE {NONE |ALL| role [, role ]...} TOuser[,user]...
服务器应视为必需的角色。实际上,这些 角色会自动授予每个用户,尽管 设置mandatory_roles 实际上不会更改任何用户帐户和授予的角色 在系统表中不可见。
mysql8开启角色自动激活
- 修改
myd.cnf配置文件#设置角色激活开启activate-all-roles-on-login=ON - 命令手动开启 这个方式,会在mysql服务重启后失效
#设置开启setglobal 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 ALLEXCEPT'role1','role2';-- 语法SET ROLE { DEFAULT| NONE|ALL|ALLEXCEPT role [, role ]...| role [, role ]...}
设置服务器默认角色(不重要)
SET PERSIST mandatory_roles ='`role1`@`%`,`role2`,role3,role4@localhost';
服务器视为必需的角色。这些 角色会自动授予每个用户,设置
mandatory_roles
实际上不会更改任何用户帐户和授予的角色,在系统表中也不可见。
撤销授权
REVOKEINSERTON*.*FROM'jeffrey'@'localhost';REVOKE'role1','role2'FROM'user1'@'localhost','user2'@'localhost';REVOKESELECTON world.*FROM'role3';-- 语法REVOKE[IFEXISTS] 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 FORCURRENT_USER;SHOW GRANTS FORCURRENT_USER();SHOW GRANTS FOR'username'@'%';--查看某个用户授权
role的值有:
ALL PRIVILEGES: 所有权限CREATE: 创建数据库和表的权限。DROP: 删除数据库和表的权限。ALTER: 修改表结构的权限。INSERT: 向表中插入数据的权限。SELECT: 查询表中数据的权限。UPDATE: 修改表中数据的权限。DELETE: 删除表中数据的权限。
版权归原作者 万山寒 所有, 如有侵权,请联系我们删除。