a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换

1)使用如下命令查询账号:

select user, host,password from mysql.user;
#输出用户列表,查者是否存在相同用户名

MySQL 认证方式 mysql身份验证_mysql

2)执行如下语句查询是否在空口令用:

select * from mysql.user where length(password)= 0 or password is null;
# 输出结果是否为空

MySQL身份鉴别通过username+host+password来进行登录验证,鉴别因素三者不能同时为空

MySQL 认证方式 mysql身份验证_数据库_02

3)查看用户口今复杂度相关配置:

针对5.6.6之后版本

show variables like 'validate_password%';
validate_password_check_user_name:OFF
validate_password_dictionary_file: 字典文件
validate_password_length:8 密码长度
validate_password_mixed_case_count:1 大小写
validate_password_number_count:1 密码中数据长度
validate_password_policy:1 or MEDIUM
validate_password_special_char_count:1 特殊字符

4) 定期更换

MySQL5.6.6以后在user表中有一个password_last_changed字段,该字段默认为N修改为Y后可以通过定时器任务来进行密码修改。

select password_expired from mysql.user;
#该字段默认为N

MySQL 认证方式 mysql身份验证_mysql_03

b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施

1)登录失败

show variables like '%max_connect_errors%';
# max_connect_errors 是用户输入密码最大错误次数,失败达到最大次数则锁定

MySQL 认证方式 mysql身份验证_数据库_04

show variables like '%timeout%';
# 查看返回值Wait_timeout,这个参数是超时重连的时间,每过N秒MySQL就会重启

MySQL 认证方式 mysql身份验证_字段_05

c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听

这个通过询问看看使用的远程链接方式是什么,查询此连接工具是否具备远程连接加密措施

d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现

询问并核查是否采用双因子登录数据库,且其中一种属于密码技术

  • 通常情况下都是用户名+口令,且数据库层面实现双因子登录比较困难