文章目录
这类操作主要是数据库管理员用的多
用来管理数据库用户、控制数据库的访问权限
用户及权限
查询用户
select * from mysql.user;
创建用户
create user '用户名'@'主机名' identified BY '密码';
修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码' ;
删除用户
drop user '用户名'@'主机名' ;
查看权限
show grants for '用户名'@'主机名' ;
授予权限
grant 权限[(列名, ..)] on 数据库名.表名 to '用户名'@'主机名';
撤销权限
revoke 权限[(列名, ..)] on 数据库名.表名 from '用户名'@'主机名';
例如:
- 将所有数据库的所有权授予通过所有 IP 地址连接 root 的用户
grant all privileges on *.* to root@'%';
- 授权 test 用户调用 studentdb 数据库中的 proc 存储过程
grant execute on studentdb.proc to 'test'@'%';
binlog 所需权限
MySQL Binlog 权限需要三个权限 SELECT, REPLICATION SLAVE, REPLICATION CLIENT
MySQL Binlog 权限 - chenzechao - 博客园
密码
参数详解
validate_password.length 固定密码的总长度
validate_password_dictionary.file 指定密码验证的文件路径
validate_password_mixed_case.count 整个密码中至少要包含大/小写字母的总个数
validate_password_number.count 整个密码中至少要包含阿拉伯数字的个数
validate_password.policy 指定密码的强度验证等级,默认为 MEDIUM
validate_password.special_char_count 整个密码中至少要包含特殊字符的个数
validate_password_policy 的取值:
0/LOW
:只验证长度1/MEDIUM
:验证长度、数字、大小写、特殊字符2/STRONG
:验证长度、数字、大小写、特殊字符、字典文件
查看 MySQL 密码策略
show VARIABLES LIKE 'validate_password%';
设置密码验证强度
set global validate_password.policy=0/1/2;
设置密码最短长度
set global validate_password.length=长度;
角色
角色是在 MySQL8.0 中引入的新功能。角色是权限的集合,可以为角色添加或移除权限。
用户可以被赋予角色,同时也被授予角色包含的权限。对角色进行操作需要较高的权限。
并且像用户账户一样,角色可以拥有授予和撤消的权限。
引入角色的目的是
- 方便管理拥有相同权限的用户。
- 恰当的权限设定,可以确保数据的安全性,这是至关重要的。
创建角色
create role '角色名'[@'主机名'];
删除角色
drop role '角色名';
查看角色权限
show grants for '角色名'[@'主机名'];
给用户授予角色
grant '角色名'[@ '主机名'] to 'user_name'[@ 'host_name']
授予权限后需要激活才生效
set default '角色名'[@ '主机名'] all to '用户名'[@ '主机名'];
撤销用户角色
revoke '角色名'[@ '主机名'] from '用户名'[@ '主机名'];
回收角色的权限
revoke privileges on 数据库名.表名 from '角色名';
例如:
revoke insert,update,delete on school.* from 'school_write';
设置强制角色
强制角色是给每个创建账户的默认角色,不需要手动设置。强制角色无法被 **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'; # 系统重启后失效