安全说明:确保数据库版本为最新并修复已知的安全漏洞。攻击者可能会利用已知的漏洞对MySQL服务器进行攻击。
检查方法:显示当前的数据库版本,查看MySQL官网,比较补丁修复情况。
select version();

配置方法:安装最新版本的补丁或使用稳定版本。
安全说明:MySQL安装时默认创建一个测试数据库test,完全的空数据库,没有任何表,可以删除。测试数据库可以被所有用户访问,并且可以用来消耗系统资源。删除测试数据库将减少MySQL服务器的攻击面。防止遭受一句话注入木马的入侵
检查方法:show databases like 'test';或show databases;检查test数据库是否存在。


配置方法:drop database test;
安全说明:local_infile参数决定是否可以通过LOAD DATA LOCAL INFILE来实现加载或或选择位于MySQL客户端计算机上的文件。禁用local_infile可以阻止黑客利用sql注入来读取数据库文件,降低数据库带来的安全损失。
检查方法:vi /etc/my.cnf在shell中进入/etc下查看MySQL的配置文件my.cnf或show variables where variable_name='local_infile';进入MySQL中查看。确认local_infile不等于ON或1。


配置方法:修改MySQL配置文件my.cnf,添加配置参数local_infile=0 0代表OFFsystemctl restart mysqld重启MySQL服务

vi /etc/my.cnf确认skip-grant-tables不等于1。skip-grant-tables=0或skip-grant-tables=FALSE或用#skip-grant-tables=1将其注释掉,然后重启MySQL服务systemctl restart mysqld
安全说明:禁用软链接,开启symbolic-links=0可以禁止数据库用户删除或重名数据文件目录之外的文件。多个客户可能会访问同一个数据库,若使用链接文件可能会导致外部客户锁定 MySQL 服务器。
检查方法:查看MySQL配置文件symbolic-links参数的设定vi /etc/my.cnf确认symbolic-links=0或进入MySQL输入show variables like 'have_symlink';确认返回的值为DISABLED表示禁止无效不可用的状态。


配置方法:修改MySQL配置文件my.cnf确认symbolic-links=0
select user, host from mysql.user;查看用户权限;SELECT user, host FROM mysql.user WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y');如果返回的都是管理员账号说明安全,否则需要对用户清除权限。

安全说明:File_priv权限用于允许或禁止MySQL用户在服务器主机上读写文件。黑客很可能利用这一点盗取数据库中敏感数据。
检查方法:select user, host from mysql.user where File_priv = 'Y';如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法:mysql> REVOKE FILE ON *.* FROM ' //为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;//为需要增加权限的用户
备注:8.0版本默认情况下,只有管理员账号拥有File_priv权限
select user, host from mysql.user where Super_priv = 'Y';如果返回的都是管理员账号说明安全,否则需要对用户清除权限
mysql> REVOKE FILE ON *.* FROM '’; //为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;//为需要增加权限的用户
安全说明:Shutdown_priv权限用于允许或禁止给定用户是否可以关闭数据库,会造成一定安全隐患。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法:select user, host from mysql.user where Shutdown_priv = 'Y';如果返回的都是管理员账号说明安全,否则需要对用户清除权限

配置方法:mysql> REVOKE FILE ON *.* FROM ' //为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;//为需要增加权限的用户
安全说明:Create_user_priv权限用于允许或禁止给定用户是否可以创建任意用户,会造成一定安全隐患。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法:select user, host from mysql.user where Create_user_priv = 'Y';如果返回的都是管理员账号说明安全,否则需要对用户清除权限。

配置方法:mysql> REVOKE FILE ON *.* FROM ' //为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;//为需要增加权限的用户

find / -name .mysql_historycat /dev/null > ~/.mysql_history
vi ~/.bashrc添加如下配置:export MYSQL_HISTFILE=/dev/null修改完后,保存退出,执行如下命令,使更改生效source ~/.bashrcgrep MYSQL_PWD /proc/*/environ如果有返回行说明那个进程使用了MYSQL_PWD环境变量。
安全说明:MySQL系统账号在安装完数据库后,不应该有其他用途。建议禁止该账号登陆操作系统。此举在防止黑客利用MySQL数据库漏洞反射shell有极佳效果。
检查方法:假设MySQL数据库操作系统账号就是mysql,执行下列命令:getent passwd mysql | egrep "^.*[ \ /bin\ / false| \ / sbin \ / nologin]$"如果没有返回行则说明存在安全隐患

配置方法:执行下列语句禁止mysql用户(如hadoop)登陆:usermod -s /sbin/nologin hadoop回退步骤:usermod -s /bin/bash hadoop