1.1 检查是否删除无关或匿名帐号

检查点

执行以下命令查看是否存在匿名账号:

select count(*) from mysql.user where user = '';

判定依据: 不存在匿名账号则合规,否则不合规。

加固步骤:

1、以管理身份登录数据库执行如下语句:

mysql>use mysql;                # 切换当前数据库为MySQL。
mysql>select * from mysql.user where user='';  # 统计MySQL中用户名为空的用户数量  

MySql安全加固:无关或匿名帐号&是否更改root用户&避免空口令用户&是否加密数据库密码-LMLPHP

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';

MySql安全加固:无关或匿名帐号&是否更改root用户&避免空口令用户&是否加密数据库密码-LMLPHP

判定依据: 系统中不存在名称为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;

MySql安全加固:无关或匿名帐号&是否更改root用户&避免空口令用户&是否加密数据库密码-LMLPHP

5、检查修改后的mysqlroot用户是否正常使用

MySql安全加固:无关或匿名帐号&是否更改root用户&避免空口令用户&是否加密数据库密码-LMLPHP

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;

MySql安全加固:无关或匿名帐号&是否更改root用户&避免空口令用户&是否加密数据库密码-LMLPHP

判定依据: 系统如果存在空口令或者使用默认密码的账号则不合规,否则合规。

加固参考步骤:

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!='';

MySql安全加固:无关或匿名帐号&amp;是否更改root用户&amp;避免空口令用户&amp;是否加密数据库密码-LMLPHP

判定依据: 系统不存在未加密的密码则合规,否则不合规。

加固参考步骤:

1、系统密码默认是加密的,如果存在未加密的账号,可以修改其密码:

mysql>update mysql.user set Password='<password>' where User='<username>';

例如:

mysql> update mysql.user set authentication_string='Zyl@2024' where User='mfs';

MySql安全加固:无关或匿名帐号&amp;是否更改root用户&amp;避免空口令用户&amp;是否加密数据库密码-LMLPHP

MySql安全加固:无关或匿名帐号&amp;是否更改root用户&amp;避免空口令用户&amp;是否加密数据库密码-LMLPHP


03-02 10:59