MySQL8.0的用户角色权限
MySQL8新增了角色(role)的概念,使账号权限的管理,更加灵活方便。所谓角色,就是一些权限的集合。然后再把该集合授权给某个账户(往往是某一批账户,因为账号会绑定IP,不同的IP,虽然账号名相同被视为不同账号),这样当我们需要对这些账号减少或增加权限时,只需要修改权限集合(role)即可,不用单个账号多次修改。这确实使DBA的运维轻松了不少。
创建角色
create role 'app_dev';
给角色添加权限
# 权限:查询,新增,更新,删除,外键权限,修改表结构,创建临时表
grant select,insert,update,delete,references,alter,create temporary tables
on db1.* to app_dev;
查看角色权限
show grants for 'app_dev';
撤销角色的权限
--撤销'dev'@'localhost'用户对数据库db1的表修改(alter)权限
revoke alter on db1.* from 'dev'@'localhost';
--撤销'dev'@'localhost'用户对数据库db1的所有权限
revoke all on db1.* from 'dev'@'localhost';
--撤销app_dev角色对数据库db1的所有权限
revoke all on db1.* from app_dev;
创建用户
create user 'dev'@'localhost' identified with mysql_native_password by 'test';
查看用户
select user,host from mysql.user;
给用户直接赋权限
grant all privileges on *.* to 'dev'@'localhost';
给用户赋角色
将角色app_dev赋给用户dev
--将角色app_dev赋给用户dev
grant app_dev to dev;
激活用户的角色
--激活用户的角色
set default role all to dev;
如果不想手动激活用户角色,则进行如下设置
--如果不想手动激活用户角色,则进行如下设置
show global variables like 'activate_all_roles_on_login';
set global activate_all_roles_on_login=ON;
查看用户权限
show grants for dev;
--如果用户下挂角色则需要加using 角色名,才能看到对应角色下得权限信息
show grants for dev using app_dev;
刷新权限
在操作修改完权限后,执行如下命令,刷新数据库权限配置。
FLUSH PRIVILEGES;
常见权限
权限 | 权限级别 | 权限说明 |
---|---|---|
CREATE | 数据库、表或索引 | 创建数据库、表或索引权限 |
DROP | 数据库或表 | 删除数据库或表权限 |
GRANT OPTION | 数据库、表或保存的程序 | 赋予权限选项 |
REFERENCES | 数据库或表 | |
ALTER | 表 | 更改表,比如添加字段、索引等 |
DELETE | 表 | 删除数据权限 |
INDEX | 表 | 索引权限 |
INSERT | 表 | 插入权限 |
SELECT | 表 | 查询权限 |
UPDATE | 表 | 更新权限 |
CREATE VIEW | 视图 | 创建视图权限 |
SHOW VIEW | 视图 | 查看视图权限 |
ALTER ROUTINE | 存储过程 | 更改存储过程权限 |
CREATE ROUTINE | 存储过程 | 创建存储过程权限 |
EXECUTE | 存储过程 | 执行存储过程权限 |
FILE | 服务器主机上的文件访问 | 文件访问权限 |
CREATE TEMPORARY TABLES | 服务器管理 | 创建临时表权限 |
LOCK TABLES | 服务器管理 | 锁表权限 |
CREATE USER | 服务器管理 | 创建用户权限 |
PROCESS | 服务器管理 | 查看进程权限 |
RELOAD | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
REPLICATION CLIENT | 服务器管理 | 复制权限 |
REPLICATION SLAVE | 服务器管理 | 复制权限 |
SHOW DATABASES | 服务器管理 | 查看数据库权限 |
SHUTDOWN | 服务器管理 | 关闭数据库权限 |
SUPER | 服务器管理 | 执行kill线程权限 |