1.确保只有管理员账号有所有数据库的访问权限
建议理由:
除了管理员账号,其他用户没必要有所有数据库的访问权限。过高的权限会导致安全问题。
检查方法:用sql语句检查
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');
SELECT user, host FROM mysql.dbWHERE db = 'mysql' AND ((Select_priv = 'Y') OR (Insert_priv = 'Y')
OR (Update_priv = 'Y') OR(Delete_priv = 'Y') 45 | Page OR (Create_priv = 'Y') OR (Drop_priv = 'Y'));
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
修复建议:
清除非管理员账号的过高部分权限
2.非管理员账号file_priv不应该设置成Y
建议理由:
File_priv权限允许mysql用户对磁盘进行读写操作。黑客很可能利用这一点盗取数据库中敏感数据。
检查方法:用sql语句检查
select user, host from mysql.user where File_priv = 'Y';
如果返回的都是管理员账号,否则需要对用户清除权限
修复建议:
REVOKE FILE ON *.* FROM '’;
3.非管理员账号process_priv不应该设置成Y
建议理由:
process_priv权限允许委托账号查看当前正在执行的sql语句。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法:用sql语句检查
select user, host from mysql.user where Process_priv = 'Y';
如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
修复建议:
REVOKE PROCESS ON *.* FROM '’;
4.非管理员账号super_priv不应该设置成Y
建议理由:
super_priv权限允许委托账号执行任意语句,非管理员不应该具备该权限。
检查方法:用sql语句检查
select user, host from mysql.user where Super_priv = 'Y';
如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
修复建议:
REVOKE SUPER ON *.* FROM '’;
5.非管理员账号shutdown_priv不应该设置成Y
建议理由:
shutdown_priv权限允许委托账号关闭数据库,会造成一定安全隐患。
检查方法:用sql语句检查
SELECT user, host FROM mysql.user WHERE Shutdown_priv = 'Y';
如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
修复建议:
REVOKE SHUTDOWN ON *.* FROM '’;
6.非管理员账号create_user_priv不应该设置成Y
建议理由:
create_user_priv权限允许委托账号创建任意用户,会造成一定安全隐患。
检查方法:用sql语句检查
SELECT user, host FROM mysql.user WHERE Create_user_priv = 'Y';
如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
修复建议:
REVOKE CREATE USER ON *.* FROM '’;
7.非管理员账号grant_priv不应该设置成Y
建议理由:
Grant_priv权限允许委托账号对其他用户赋权,可能会被黑客利用造成一定安全隐患。
检查方法:用sql语句检查
SELECT user, host FROM mysql.user WHERE Grant_priv = 'Y';
如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
修复建议:
REVOKE Grant ON *.* FROM '’;
8.非管理员账号reload_priv不应该设置成Y
建议理由:
reload_priv权限可以对本地文件进行操作,可能会被黑客利用造成一定安全隐患。
检查方法:用sql语句检查
SELECT user, host FROM mysql.user WHERE reload_priv = 'Y';
如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
修复建议:
REVOKE reload ON *.* FROM '’;
9.非管理员账号repl_slave_priv不应该设置成Y
建议理由:
repl_slave_priv用于从主服务器上获得更新的数据。黑客很可能利用这一点盗取数据库中敏感数据。
检查方法:用sql语句检查
select user, host from mysql.user where repl_slave_priv = 'Y';
如果返回的都是管理员账号,否则需要对用户清除权限
修复建议:
REVOKE repl_slave ON *.* FROM '’;
10.确保DML/DDL权限只在特定用户手上
建议理由:
限制用户有INSERT,SELECT,UPDATE,DELETE,DROP,CREATE和ALTER权限。这些权限都会导致数据泄密等。
检查方法:用sql语句检查
SELECT User,Host,Db FROM mysql.db WHERE Select_priv='Y' ORInsert_priv='Y'
OR Update_priv='Y' ORDelete_priv='Y' OR Create_priv='Y' OR Drop_priv='Y' OR Alter_priv='Y';
如果返回的都是管理员账号,否则需要对用户清除权限
修复建议:
REVOKE SELECT ON . FROM ; REVOKE INSERT ON . FROM ;
REVOKE UPDATE ON . FROM ;REVOKE DELETE ON . FROM ;
REVOKE CREATE ON . FROM ;REVOKE DROP ON . FROM ;
REVOKE ALTER ON . FROM ;
领取专属 10元无门槛券
私享最新 技术干货