应查询mysql.user表,执行select user, host, plugin from mysql.user where user = 'your_username';,需用root等管理员权限登录,plugin字段仅存在于mysql 5.7.2+版本,且current_user()返回值才对应真实认证账号。

怎么查当前连接用户的认证插件?
直接查 mysql.user 表,不是 information_schema 里的用户相关视图——那些不存认证插件信息。插件类型只记录在系统库 mysql 的 user 表中,且必须用管理员权限(如 root)登录后查询。
- 执行
SELECT user, host, plugin FROM mysql.user WHERE user = 'your_username';,把'your_username'换成你实际想查的用户名(比如'app_user') - 如果不确定用户名带什么
host后缀,先跑SELECT user, host, plugin FROM mysql.user;看全量,避免漏掉'app_user'@'192.168.%'这类通配主机 -
plugin字段值常见有:caching_sha2_password、mysql_native_password、auth_socket(Ubuntu 默认 root 用这个),注意大小写完全匹配
为什么不能用 INFORMATION_SCHEMA 查认证插件?
INFORMATION_SCHEMA 是只读元数据视图,它不暴露账户认证逻辑。比如 INFORMATION_SCHEMA.PLUGINS 能列出已加载的插件名,但无法告诉你“哪个用户用了哪个插件”;INFORMATION_SCHEMA.USER_PRIVILEGES 根本不包含 plugin 字段。硬要从这里查,只会白忙活或误判。
-
INFORMATION_SCHEMA.PLUGINS只反映服务端加载了哪些插件,和具体用户无关 -
INFORMATION_SCHEMA.USER_PRIVILEGES甚至不包含plugin列,字段只有GRANTEE、PRIVILEGE_TYPE等权限信息 - 唯一能关联用户与插件的地方,就是
mysql.user表本身——这是 MySQL 认证流程的源头依据
查不到 plugin 字段?可能是权限或版本问题
如果你执行 SELECT * FROM mysql.user; 发现没有 plugin 字段,大概率是 MySQL 5.6 或更早版本——plugin 列从 5.7.2 开始才加入 mysql.user 表。但这种情况现在极少见,除非维护遗留系统。
- MySQL 5.7+:字段名为
plugin,类型为varchar(64) - MySQL 5.6 及以前:认证方式隐含在
password字段长度和内容里,无法直接查插件名,只能靠经验推断(如 password 长度为 41 通常是mysql_native_password) - 执行
SHOW VARIABLES LIKE 'version';确认版本,避免在低版本上徒劳尝试plugin查询
连自己当前用的是啥插件都不知道?试试这个快捷方式
如果你刚连上 MySQL,还不确定当前会话对应哪个账号(比如用了 -u 参数但记不清用户名),先运行 SELECT USER(), CURRENT_USER();:
-
USER()返回客户端声明的用户名@主机(可能被代理或 DNS 解析影响) -
CURRENT_USER()才是服务器最终匹配到的账号,也就是真正生效认证规则的那个'user'@'host' - 拿
CURRENT_USER()的结果去查mysql.user表,才能准确定位插件类型
查插件这事看着简单,但容易卡在权限、版本、字段来源混淆这三处。最稳妥的路径永远是:用管理员连 → 查 mysql.user → 对准 CURRENT_USER() 返回的账号 → 看 plugin 值。其他任何绕路方案,基本都多走一步错一步。











