DCL(数据控制语言)


这类操作主要是数据库管理员用的多

用来管理数据库用户、控制数据库的访问权限

用户及权限

查询用户

select * from mysql.user;

创建用户

create user '用户名'@'主机名' identified BY '密码';

修改用户密码

alter user '用户名'@'主机名' identified with mysql_native_password by '新密码' ;

删除用户

drop user '用户名'@'主机名' ;

image.png

查看权限

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 - 博客园

密码

参数详解

image.png

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'; # 系统重启后失效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值