这篇博客是关于MySQL数据库加固的试验
实验环境是:在CentOS 7的虚拟机上新搭建了MySQL数据库
一、设置root用户远程连接的IP限制
新搭建好的MySQL是没有开启远程连接的,开启MySQL服务,用本机连接试一下,发现现在能ping通连不上
设置用户远程连接只要修改mysql库中user表的host列就可以,默认值为localhost就是禁止的,可以直接将localhost修改为%,相当于开放所有IP远程访问,但肯定没有人这么做因为数据库非常重要,所以可以将localhost修改为指定的IP访问。
修改的命令是
use mysql //首先使用mysql库
update user set host='%' where user='root'; //修改host列,“%”的话是开启所有用户的远程连接,如果想要开启某一个IP就在host后面改成IP就可以
flush privileges; //刷新权限
select host,user from user;
先改成开放所有IP试一下
mysql -h IP -P 端口 -u 用户名 -p
现在这样的话同局域网内的所有终端都可以访问我的数据库了,但这样很不安全,所以可以设置成指定的IP
这样就只有名单内的用户可以远程访问了
如果想要添加多个远程用户的话可以使用一下命令,添加多条策略
grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;
flush privileges;
删除策略:delete from user where host='172.16.12.1';
然后试一下,当我的IP不在列表里面时可以是不是可以连接数据库
二、设置用户密码策略
查看MySQL密码策略
SHOW VARIABLES LIKE 'validate_password%';
| Variable_name Value
| validate_password_check_user_name OFF
| validate_password_dictionary_file //密码文件保存路径
| validate_password_length 8 //密码长度,默认为8
| validate_password_mixed_case_count 1 //密码中英文字母的个数,默认为1
| validate_password_number_count 1 //密码中数字的个数,默认为1
| validate_password_policy MEDIUM //密码强度(LOW、MEDIUM、STRONG)默认为MEDIUM
| validate_password_special_char_count 1 //密码中特殊符号的个数,默认为1
密码策略这个分为LOW、MEDIUM、STRONG(也可以设置为0、1、2,和这个一样的分别对应这三个)
LOW或者0:只对密码长度进行校验
MEDIUM或者1:对长度、英文、数字、特殊符号进行校验
STRONG或者2:对长度、英文、数字、特殊符号进行,字典文件进行校验,(用户的密码会和系统妹纸的字典进行校验,不能有连续四个字符与密码文件中单词的匹配,就是要求设置随机密码的意思)
设置策略:set global 策略 = 值
这样可以根据需求对策略进行设置