我想知道是否有办法让mysql查询返回发出查询的用户的用户名。
这可能吗?
答案 0 :(得分:67)
尝试运行
SELECT USER();
或
SELECT CURRENT_USER();
有时可能会有所不同,USER()将通过您尝试进行身份验证的登录信息返回,CURRENT_USER()将返回您实际允许进行身份验证的方式。
答案 1 :(得分:63)
尝试使用CURRENT_USER()
功能。这将返回MySQL用于验证客户端连接的用户名。这个用户名决定了您的权限。
这可能与客户端发送给MySQL的用户名不同(例如,即使您发送了用户名,MySQL也可能使用匿名帐户对您的客户端进行身份验证)。如果您想要连接时客户端发送给MySQL的用户名,请使用USER()
函数。
该值表示您在连接服务器时指定的用户名以及您连接的客户端主机。该值可以与CURRENT_USER()的值不同。
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
答案 2 :(得分:16)
使用此查询:
SELECT USER();
或者
SELECT CURRENT_USER;
答案 3 :(得分:7)
您可以使用:
SELECT USER();
或
SELECT CURRENT_USER();
在此处查看更多http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
答案 4 :(得分:2)
打印使用数据库的当前用户
select user();
或
select current_user();
答案 5 :(得分:2)
您还可以使用: MySQL的>从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 |
+---------------+-------------------------------+
答案 6 :(得分:0)
您可以在MySQL中使用CURRENT_USER()函数找到当前用户名。
例如:
SELECT CURRENT_USER();
但是CURRENT_USER()
不会总是返回登录的用户。因此,如果您想拥有登录用户,请改用SESSION_USER()
。
答案 7 :(得分:0)
我需要这样一个功能,我使用了 CURRENT_USER() 但这给了我全局管理员用户,即使我在连接到数据库时更改了查询用户名,每个查询也恰好相同。 显然,这在我正在寻找的用例中是无用的。 然后我使用了 USER() ,它给了我发起查询的连接字符串的用户名。 如果我理解这个问题,这就是这个人想要的通俗易懂的语言。就我而言,我在触发器中使用它来跟踪对事务表中的行所做的更改。