我想知道是否有一种方法可以使mysql查询返回发出查询的用户的用户名。
这可能吗?
Answers:
尝试该CURRENT_USER()
功能。这将返回MySQL用来验证客户端连接的用户名。此用户名确定您的特权。
这可能与客户端发送给MySQL的用户名有所不同(例如,即使您发送了用户名,MySQL可能仍使用匿名帐户对客户端进行身份验证)。如果您想要用户名,客户端在连接时发送给MySQL,请改用该USER()
函数。
该值指示您在连接到服务器时指定的用户名,以及从中连接的客户端主机。该值可以不同于CURRENT_USER()的值。
http://dev.mysql.com/doc/refman/5.0/zh-CN/information-functions.html#function_current-user
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_USER()' at line 1
CURRENT_USER()
不为题正确“有没有办法知道*你*在MySQL当前用户名?”。答案是“ USER()”,它“返回当前的MySQL用户”(dev.mysql.com/doc/refman/5.7/en/…)。您应该更新答案以使其更完整,因为它太短了。
尝试运行
SELECT USER();
要么
SELECT CURRENT_USER();
有时可能会有所不同,USER()将返回您尝试进行身份验证的登录名,而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> 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 |
+---------------+-------------------------------+
您可以在MySQL中使用CURRENT_USER()函数找到当前用户名。
例如:
SELECT CURRENT_USER();
但是CURRENT_USER()
不会总是返回已登录的用户。因此,如果您想拥有已登录的用户,请SESSION_USER()
改用。