Q:如何保障 MySQL 数据库身份鉴别的有效性
提示:本文示例均以 MySQL5.7 为例,通过 root 用户执行相关命令。
如何保障 MySQL 数据库身份鉴别,有很多手段进行识别。博主通过 SQL 的方式,进行逐一介绍。
一、有效性检查
1. 用户唯一
检查授权的用户是否唯一:
SELECT USER, HOST FROM mysql.user;
2. 启用密码验证
检查 PLUGIN 是否包含 *_password:
-- mysql_native_password,身份验证插件
SELECT USER, HOST, PLUGIN FROM mysql.user;
3. 是否存在空口令用户
检查 authentication_string 是否存在空值:
-- authentication_string,加密后密码,即执行 password() 后的值
SELECT USER, HOST, PLUGIN, authentication_string FROM mysql.user;
4. 是否启用口令复杂度校验
检查 validate_password 插件,是否已启用:
-- 如果为空,证明未启用该插件
SHOW VARIABLES LIKE 'validate%';
5. 是否设置口令的有效期
-- 默认 0,永不过期
SHOW VARIABLES LIKE '%default_password_lifetime%';
6. 是否限制登录失败尝试次数
-- 如为空,代表未设置,可无限尝试
SHOW VARIABLES LIKE '%connection-control-failed-connections-threshold%';
7. 是否设置(超过尝试次数)锁定的最小时长
-- 如为空,代表未设置,永不锁定
SHOW VARIABLES LIKE ;



