MySQL角色及密码SSL加密

MySQL 8.0支持角色的授权。

SSL

使用status查看是否开启,show variables like ‘%ssl%';

开启SSL【仅对tcp/ip方式生效,socket不需要使用ssl】

执行 mysql_ssl_rsa_setup程序

会在mysql数据目录生成 pem文件,设置权限为 mysql用户

1
chown mysql:mysql *.pem

重启mysql服务生效

修改配置文件修改用户ssl连接

1
2
3
[mysqld]
require_secure_transport = ON

设置用户使用ssl

1
2
3
4
5
6
create user 'caoayu'@'%' identified by 'caoayu' require ssl;

alter user 'caoayu'@'%' require ssl;

flush privileges;
exit;

需要远程用户的受信任的CA的证书(双向认证)

1
2
3
alter user 'caoayu'@'%' require X509;
flush privileges;
exit;

此时登录只能使用mysql ssl生成的客户端证书。

1
mysql -u caoayu -p -h vm.com --ssl-ca=~/client-ssl/ca.pem --ssl-cert=~/client-ssl/client-cert.pem --ssl-key=~

不使用ssl启动

1
mysql -h mysql1 -utest -ptest --ssl-mode=disabled

密码插件

查看

1
show plugins;

安装

https://dev.mysql.com/doc/refman/5.7/en/plugin-loading.html

  1. 配置文件修改后需要重启服务
1
2
[mysqld] 
[plugin-load-add=validate_password.so](http://plugin-load-add=myplugin=somepluglib.so)

2 命令

1
INSTALL PLUGIN validate_password SONAME 'validate_password';

3 密码策略要求

https://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html

去掉复杂的安全策略

1
2
3
set global validate_password_policy=0;
set global validate_password_length=1;
alter user 'caoayu'@'%' identified by 'caoayu';

角色 [8.0]

创建角色

1
2
3
create role dba;
grant all on *.* to dba with grant option;

用户与角色绑定

1
grant dba to caoayu@'%';