我想知道 mysql 查询是否有办法返回发出查询的用户的用户名。
这可能吗?
尝试运行
SELECT USER();
或者
SELECT CURRENT_USER();
有时可能会有所不同,USER()将返回您尝试进行身份验证的登录名,而CURRENT_USER()将返回您实际被允许进行身份验证的方式。
试试这个CURRENT_USER()
功能。这将返回 MySQL 用于验证您的客户端连接的用户名。正是这个用户名决定了您的权限。
这可能与客户端发送给 MySQL 的用户名不同(例如,即使您发送了用户名,MySQL 也可能使用匿名帐户来验证您的客户端)。如果您想要客户端在连接时发送到 MySQL 的用户名,请改用该USER()
函数。
该值表示您在连接到服务器时指定的用户名,以及您连接的客户端主机。该值可以不同于 CURRENT_USER() 的值。
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
使用此查询:
SELECT USER();
或者
SELECT CURRENT_USER;
您可以使用:
SELECT USER();
或者
SELECT CURRENT_USER();
在此处查看更多信息http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
打印正在使用数据库的当前用户
select user();
或者
select current_user();
您可以在 MySQL 中使用 CURRENT_USER() 函数找到当前用户名。
例如:
SELECT CURRENT_USER();
但CURRENT_USER()
不会总是返回登录用户。因此,如果您想要登录用户,请SESSION_USER()
改用。
你也可以使用:mysql> select user,host from mysql.user;
+---------------+-------------------------------+
| user | host |
+---------------+-------------------------------+
| fkernel | % |
| nagios | % |
| readonly | % |
| replicant | % |
| reporting | % |
| reporting_ro | % |
| nagios | xx.xx.xx.xx |
| haproxy_root | xx.xx.xx.xx
| root | 127.0.0.1 |
| nagios | localhost |
| root | localhost |
+---------------+-------------------------------+
我需要这样的功能,并且我使用了 CURRENT_USER() 但这给了我全局管理员用户,即使我在连接到数据库时更改了查询用户名,它对于每个查询都恰好是相同的。显然,这在我正在寻找的用例中是没有用的。然后我使用了 USER() 它给了我启动查询的连接字符串的用户名。如果我理解了这个问题,这就是这个人用简单的语言想要的。就我而言,我在触发器中使用它来跟踪对事务表中的行所做的更改。