user()返回客户端声明的用户名和主机(如’admin@192.168.1.100’),current_user()返回权限系统实际认证的账号(如’admin@%’);show grants显示当前用户权限,select database()和select version(), user(), current_user()可辅助诊断连接与权限问题。

在 mysql 中查看当前登录用户的信息,最直接的方式是使用内置函数 USER() 和 CURRENT_USER(),它们返回略有不同的内容,适用于不同场景。
USER():显示你“自称”的用户名和主机
这个函数返回客户端连接时提供的用户名和主机地址(即你用什么账号、从哪台机器连进来的)。
执行:
SELECT USER();
结果类似:
‘admin@192.168.1.100’
说明你是以 admin 身份、从 IP 192.168.1.100 连入的——但不保证该账号真实存在或有权限。
CURRENT_USER():显示 MySQL 实际认证的用户
这个函数返回服务器根据权限系统匹配到的、真正生效的账号(即授权表中定义的那个 user@host)。
执行:
SELECT CURRENT_USER();
结果可能为:
‘admin@%’
说明 MySQL 实际是按 admin@% 这条记录来验证你的身份和权限的。如果返回 ‘@’,代表你用的是匿名用户,需警惕权限配置问题。
查看当前用户的权限列表
知道是谁之后,常需确认能做什么:
注意:SHOW GRANTS 不加 FOR 时,默认显示当前 CURRENT_USER() 的权限,不是 USER() 的。
补充:快速看用户归属与权限上下文
如果想进一步确认当前会话环境,可结合查询:
- 当前数据库:SELECT DATABASE();
- MySQL 版本及当前用户标识:SELECT VERSION(), USER(), CURRENT_USER();
这些组合能帮你快速定位权限异常、连接错账号、或 host 匹配偏差等问题。