MySql安全加固:无关或匿名帐号&是否更改root用户&避免空口令用户
1.1 检查是否删除无关或匿名帐号
检查点
执行以下命令查看是否存在匿名账号:
select count(*) from mysql.user where user = '';
判定依据: 不存在匿名账号则合规,否则不合规。
加固步骤:
1、以管理身份登录数据库执行如下语句:
mysql>use mysql; # 切换当前数据库为MySQL。
mysql>select * from mysql.user where user=''; # 统计MySQL中用户名为空的用户数量
2、对于查询到的用户使用一下步骤进行删除:
DROP USER语句用于删除一个或多个MySQL账户。
要使用DROP USER,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。
账户名称的用户和主机部分与用户表记录的User和Host列值相对应。
使用DROP USER,可以取消一个账户和其权限,操作如下:
DROP USER user;
该语句可以删除来自所有授权表的帐户权限记录。
3、补充操作说明
要点:
DROP USER不能自动关闭任何打开的用户对话。
而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。
1.2 检查是否更改root用户
检测步骤:
使用以下命令查看是否修改root用户名称
mysql>select count(*) from mysql.user where user = 'root';
判定依据: 系统中不存在名称为root的用户则合规,否则不合规。
加固参考步骤:
1、修改数据库root用户的名称
进入MYSQL:
mysql -u root -p
2、选择需要操作的数据库
mysql>use mysql;
3、修改用户名
mysql>update mysql.user set user="新用户名" where user="旧用户名";
如:
update mysql.user set user="mysqlroot" where user="root";
4、刷新权限
mysql> flush privileges;
5、检查修改后的mysqlroot用户是否正常使用
1.3 避免空口令用户
在MySQL 5.7版本及以后的新版中,user表中的password字段已经被废弃,取而代之的是authentication_string字段来保存密码。这个改变是为了提高数据库的安全性。
authentication_string字段是一个VARBINARY(80)类型的字段,用于存储用户的密码散列值。在新版MySQL中,密码不再以明文形式存储,而是通过密码散列算法进行加密后存储。这样即使数据库被非法访问,也无法直接获取到用户的密码。
为了兼容旧版本的MySQL,新版MySQL仍然支持使用旧的password字段进行密码验证。
检测步骤:
1、执行以下命令查看系统是否存在空密码或者默认密码的帐号
select * from mysql.user where length(password) = 0 or password is null;
或者
select * from mysql.user where length(authentication_string) = 0 or authentication_string is null;
判定依据: 系统如果存在空口令或者使用默认密码的账号则不合规,否则合规。
加固参考步骤:
1、登录mysql客户端 命令如下:
mysql -u用户名 -p密码
2、查看密码为空的用户:
select * from mysql.user where length(authentication_string) = 0 or authentication_string is null;
3、将密码为空的用户进行密码修改(密码不能为空);
示例要修改root用户密码,执行如下命令:
mysql> use mysql
mysql> update user set authentication_string=authentication_string('密码') where user='密码为空的用户名';
mysql> flush privileges
1.4 检查是否加密数据库密码
检测步骤:
1、使用如下命令查看是否存在未加密的数据库密码
mysql>select count(*) from mysql.user where length(authentication_string) < 41 and authentication_string!='';
判定依据: 系统不存在未加密的密码则合规,否则不合规。
加固参考步骤:
1、系统密码默认是加密的,如果存在未加密的账号,可以修改其密码:
mysql>update mysql.user set Password='<password>' where User='<username>';
例如:
mysql> update mysql.user set authentication_string='Zyl@2024' where User='mfs';