如何通过MySQL查询检测数据库中是否存在无密码或弱密码的账户?

2026-04-29 01:171阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计860个文字,预计阅读时间需要4分钟。

如何通过MySQL查询检测数据库中是否存在无密码或弱密码的账户?

MySQL 允许创建字符串(空字符串)作为密码的用户账户,此类账户可直接登录。这类账户属于高风险配置(默认禁止空密码,但旧实例或手动修改过`mysql.user`表的环境可能存在)。

执行以下查询确认:

SELECT host, user, authentication_string FROM mysql.user WHERE LENGTH(TRIM(authentication_string)) = 0 OR authentication_string IN ('', '*');

注意:authentication_string 字段在 5.7+ 存储的是哈希值(如 *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9),若值为 '''*'(旧版未加密占位符),说明未设密码或密码为空。

  • TRIM() 防止空格伪装成非空
  • 不依赖 password 字段(8.0 已移除)
  • 需以 root 或具备 SELECT ON mysql.* 权限账号执行

识别常见弱密码哈希值(如 '123456'、'password')

MySQL 不存储明文密码,但可比对已知弱口令的哈希值。以 MySQL 5.7 默认的 caching_sha2_passwordmysql_native_password 插件为例,其哈希逻辑固定,可预先生成常见弱口令的哈希串进行匹配。

阅读全文
标签:Mysql

本文共计860个文字,预计阅读时间需要4分钟。

如何通过MySQL查询检测数据库中是否存在无密码或弱密码的账户?

MySQL 允许创建字符串(空字符串)作为密码的用户账户,此类账户可直接登录。这类账户属于高风险配置(默认禁止空密码,但旧实例或手动修改过`mysql.user`表的环境可能存在)。

执行以下查询确认:

SELECT host, user, authentication_string FROM mysql.user WHERE LENGTH(TRIM(authentication_string)) = 0 OR authentication_string IN ('', '*');

注意:authentication_string 字段在 5.7+ 存储的是哈希值(如 *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9),若值为 '''*'(旧版未加密占位符),说明未设密码或密码为空。

  • TRIM() 防止空格伪装成非空
  • 不依赖 password 字段(8.0 已移除)
  • 需以 root 或具备 SELECT ON mysql.* 权限账号执行

识别常见弱密码哈希值(如 '123456'、'password')

MySQL 不存储明文密码,但可比对已知弱口令的哈希值。以 MySQL 5.7 默认的 caching_sha2_passwordmysql_native_password 插件为例,其哈希逻辑固定,可预先生成常见弱口令的哈希串进行匹配。

阅读全文
标签:Mysql