一、身份鉴别
1、密码复杂度(建议密码策略须为中,至少包含一个数字、特殊字符、大小写字母)
进入MySQL,使用命令查看当前数据库密码策略:
SHOW VARIABLES LIKE 'validate_password%';
如若不符合上图密码策略强度,则可使用以下命令修改:
策略等级:set GLOBAL validate_password.policy=MEDIUM;
密码长度:set GLOBAL validate_password.length=8;
大小写字母:set GLOBAL validate_password.mixed_case_count=1;
数字:set GLOBAL validate_password.number_count=1;
特殊字符:set GLOBAL validate_password.special_char_count=1;
***修改完之后,可使用以下命令测试是否配置成功**
修改用户密码:ALTER USER '用户名'@'登录方式' IDENTIFIED BY '用户新密码';
测试连接:mysql -u 用户名 - p 用户新密码
2、密码有效期(建议密码有效期为90天)
使用命令查看当前密码策略:
show variables like '%password%';
如若想修改密码有效期,可使用以下命令进行:
set global default_password_lifetime=90;
3、登录失败处理功能(建议用户连续失败登录5次,锁定账户30分钟)
先使用show plugins;命令查看是否安装connection_control.so插件,如未安装,可使用以下命令安装:
install plugin connection_control soname "connection_control.so";
install plugin connection_control_failed_login_attempts soname 'connection_control.so';
安装完可使用show variables like "%connection_control%";查看配置
如要修改,可使用以下命令:
登录失败次数:set global connection_control_failed_connections_threshold=5;
锁定时间(毫秒):set global connection_control_min_connection_delay=1800000;
4、登录连接超时(建议30分钟)
使用命令show variables like '%timeout%';主要考察两个配置:wait_timeout 和 interactive_timeout
非交互式登录:set GLOBAL wait_timeout=1800;
交互式登录:set GLOBAL interactive_timeout=1800;
5、远程管理(建议开启SSL)
使用命令show variables like '%have_ssl%';查看是否开启
如未开启,可参考以下博主文章进行配置开启或在本文结尾查看:
windows上mysql5.7开启ssl_要启用mysql服务器的ssl连接-CSDN博客
二、访问控制
1、查看用户:select user,host from mysql.user;
2、新建用户:CREATE USER '用户名'@'连接方式' IDENTIFIED BY '用户密码';
3、删除用户:DROP USER '用户名'@'连接方式';
4、授予用户权限:GRANT ALL PRIVILEGES ON database_name.* TO '用户名'@'连接方式';
记得使用FLUSH PRIVILEGES;刷新权限。
三、安全审计
查看审计是否开启:show variables like '%general_log%'
如未开启 ,可使用以下命令开启:
set global general_log=on;
四、其余知识补充
SSL关闭:
1、进入MySQL配置文件,一般位于MySQL 安装目录的 /etc 或 /etc/mysql 子目录下。或者使用find / -name my.cnf 进行查找。
2、进入my.cnf配置文件,添加ssl=0,退出保存,然后重启数据库。
3、此时进入数据库,输入show variables like 'ssl';查看SSL状态,已关闭。
SSL开启:
1、进入数据库,使用show variables like 'datadir';命令查看安装目录。
2、进入安装目录,查看ssl相关密钥文件
3、添加ssl参数至数据库配置文件/etc/my.cnf中,如下图:
4、重新启动数据库,进入MysQL,使用命令查看:
show variables like 'have_ssl';
!!!结尾:值得注意的是,本文以上身份鉴别、安全审计均为临时修改(意为如果数据库重新启动,将洗刷配置,恢复原样),故此,如若想永久修改,建议去往配置文件进行修改设置。