1.禁止mysql以管理员的账号权限运行
加固方法:在mysql的配置文件my.cnf中配置user=mysql
2.设置root用户口令并修改登录名,且不存在空密码账户
检查方法:登录mysql之后,输入这个命令:select * from mysql.user where user=""; (在安全的系统当中,不会返回什么值的)
加固方法:mysql登录进去之后,输入命令:SET PASSWORD FOR 'root'@'localhost'=PASSWORD('你的新密码');
为了更有效的改进root用户的安全性,另一种方法是为其改名。
加固方法:mysql登录之后,输入以下命令:use mysql;
UPDATE user SET user="你想起的新的名字" WHERE user="root";
flush privileges;
3.配置密码最常使用期限小于90天:
进入MySQL之后,输入:SET GLOBAL default_password_lifetime=90;
flush privileges;
4.降低用户的数据库特权,只有管理员有完整的数据库访问权限
首先应确保只有数据库管理员权限才有上述权限,可以使用一下语句进行查看各个权限的数据库账号:
select user,host from mysql.user where File_priv = 'Y';
select user,host from mysql.user where Process_priv = 'Y';
确保查询结果中不存在非管理员用户。
如果存在,使用如下命令进行权限回收:
REVOKE SHUTDOWN ON . FROM '<user>';
REVOKE CREATE USER ON . FROM '<user>';
REVOKE GRANT OPTION ON . FROM '<user>';
(注意:user为刚才查到的非管理员用户)
5.禁止或限制远程访问,确保特定主机才拥有访问特权
加固方法:进入mysql里面,grant all on . to 'root'@'localhost';
grant all on . to 'root'@'myip.athome';
flush privileges;
此时,你仍有完全的访问,但只有特定的IP(不管其是否为静态)可以访问。
这个时候,有限许可访问:
mysql>grant select,insert on mydb.* to 'someuser'@'somehost';
(这里你要把someuser换成用户名,把somehost换成相应的主机,别照抄复制粘贴)