目录
临时开启(无需重启服务即生效,但重启mysql后,配置将失效)
若无证书及秘钥,可使用mysql_ssl_rsa_setup创建证书及秘钥
进入mysql命令行,查看插件情况(因my.cnf中已配置加载并启用审计插件,因此无需再次安装)
修改默认的root用户
- 修改默认用户名称
#登录
mysql -u root -p
#切换实例
use mysql;
#修改用户名称,如admin
update user set user='admin' where user='root';
#刷新
flush privileges;
- 查验结果
select user,host from mysql.user;
检查是否存在空密码用户
select user,host from mysql.user where length(authentication_string)=0;
如存在,需删除
检查各类超时或错误次数配置
错误链接次数
max_connect_errors=100
保持默认的100即可;
等待超时时间,由默认的28800修改为7200
interactive_timeout=7200
wait_timeout=7200
Mysql登录限制
以下操作均在mysql命令窗口下进行
- 查看现有插件
show plugins;
- 安装登录限制插件
install plugin connection_control soname "connection_control.so";
install plugin connection_control_failed_login_attempts soname 'connection_control.so';
再次查看插件
- 完成安装后,在my.cnf配置文件中的“[mysqld]”选项中添加限制配置,重启mysql服务后使其生效
#登录次数及超时限制
connection-control-failed-connections-threshold = 5
connection-control-min-connection-delay = 108000
Mysql密码复杂度设置
以下操作均在mysql命令窗口下进行
- 查看现有插件
show plugins;
- 安装密码复杂度插件
install plugin validate_password soname 'validate_password.so';
再次查看插件
- 完成安装后,在my.cnf配置文件的“[mysqld]”选项中中添加限制配置,重启mysql服务后使其生效
#密码复杂度
plugin-load=validate_password.so
validate_password_policy=1
validate_password_length=8
validate_password_number_count=3
validate_password_mixed_case_count=1
validate_password_special_char_count=1
validate-password=FORCE_PLUS_PERMANENT
参数解读:
- plugin-load=validate_password.so:插件加载;
- validate_password_policy:密码策略。默认为MEDIUM。可配置的值如下:
- 0或LOW:仅需要符合密码长度(由参数validate_password_length指定)
- 1或MEDIUM:满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊符号
- 2或STRONG:满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中
- validate_password_length:用来设置密码的最小长度,默认值是8,最小是0
- validate_password_number_count:当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的数字的个数,默认是1,最小是0
- validate_password_mixed_case_count:当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少同时拥有的小写和大写字母的数量,默认是1,最小是0;默认是至少拥有一个小写和一个大写字母
- validate_password_special_char_count:当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的特殊字符的个数,默认是1,最小是0
- validate-password=FORCE_PLUS_PERMANENT:服务器在启动时加载插件,并防止在服务器运行时删除插件
- 查询修改结果
show variables like 'validate%';
账号密码自动过期
- 全局方式(临时配置)
set GLOBAL default_password_lifetime=90;
- 配置文件方式(永久配置)
在[mysqld]配置项下添加
default_password_lifetime=90
开启General_log日志
开启general log将所有到达MySQL Server的SQL记录下来。
一般不会开启该功能,因为log的量会非常庞大。
注:若开启了mysql审计功能,则不再开启此日志。
开启方式分为两种:
临时开启(无需重启服务即生效,但重启mysql后,配置将失效)
- 查看日志是否开启
show variables like 'general_log';
- 开启日志功能
set global general_log=on;
- 设置日志文件存放位置
set global general_log_file='/home/mysql/general.log';
- 查看日志文件存放位置
show variables like 'general_log_file';
- 设置输出类型
#设置输出类型为存入数据库
set global log_output='TABLE';
#设置输出类型为存入文件(默认值为FILE)
set global log_output='FILE';
#同时两种日志存储方式
set global log_output='FILE,TABLE';
- 查看日志输出类型
show variables like 'log_output';
注:
- log_output参数是对所有日志输出类型生效,包括慢查询和全日志的日志输出类型。
- 配置log_output='TABLE'时,日志信息将写入到mysql.slow_log表中。同时记录到表中要比记录到文件中消耗更多的系统资源。对于需要启用慢查询日志,又需要获得更高的系统性能的,那么建议优先记录到文件。
配置文件开启(永久生效)
- 在my.cnf配置文件中的“[mysqld]”选项中添加限制配置,重启mysql服务后使其生效
general_log = ON
general_log_file=/home/mysql/data/general.log
log_output=file
注:
- 以上两种配置方法可同时配置,保持配置参数一致即可。将实现无需重启即生效,且重启不失效的效果。
- log_output参数如果慢查询中已配置,这里就不要配置了,如使用文件输出类型,也可不添加该配置。
加密链接
证书及秘钥说明
注:5.7版本以后,默认源码安装完,在其数据目录,即datadir变量下,就已生成了证书及秘钥文件,且已开启了ssl加密链接功能。
一般升级到5.7版本后,查询have_openssl就已经是默认开启的了,一般检查人员仅确认其为开启就可通过。一般不会深入确认用户使用启用了ssl加密用户或x509用户。