101

我想知道 mysql 查询是否有办法返回发出查询的用户的用户名。

这可能吗?

4

8 回答 8

100

尝试运行

SELECT USER();

或者

SELECT CURRENT_USER();

有时可能会有所不同,USER()将返回您尝试进行身份验证的登录名,而CURRENT_USER()将返回您实际被允许进行身份验证的方式。

于 2013-10-13T21:08:32.467 回答
93

试试这个CURRENT_USER()功能。这将返回 MySQL 用于验证您的客户端连接的用户名。正是这个用户名决定了您的权限。

这可能与客户端发送给 MySQL 的用户名不同(例如,即使您发送了用户名,MySQL 也可能使用匿名帐户来验证您的客户端)。如果您想要客户端在连接时发送到 MySQL 的用户名,请改用该USER()函数。

该值表示您在连接到服务器时指定的用户名,以及您连接的客户端主机。该值可以不同于 CURRENT_USER() 的值。

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

于 2013-10-13T21:07:26.930 回答
18

使用此查询:

SELECT USER();

或者

SELECT CURRENT_USER;
于 2013-10-13T21:07:26.320 回答
7

您可以使用:

SELECT USER();

或者

SELECT CURRENT_USER();

在此处查看更多信息http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

于 2013-10-13T21:08:27.667 回答
3

打印正在使用数据库的当前用户

select user();

或者

select current_user();
于 2016-02-01T04:17:26.493 回答
2

您可以在 MySQL 中使用 CURRENT_USER() 函数找到当前用户名。

例如: SELECT CURRENT_USER();

CURRENT_USER()不会总是返回登录用户。因此,如果您想要登录用户,请SESSION_USER()改用。

于 2018-12-14T08:07:25.987 回答
2

你也可以使用: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                     |
+---------------+-------------------------------+
于 2016-10-19T19:24:02.037 回答
0

我需要这样的功能,并且我使用了 CURRENT_USER() 但这给了我全局管理员用户,即使我在连接到数据库时更改了查询用户名,它对于每个查询都恰好是相同的。显然,这在我正在寻找的用例中是没有用的。然后我使用了 USER() 它给了我启动查询的连接字符串的用户名。如果我理解了这个问题,这就是这个人用简单的语言想要的。就我而言,我在触发器中使用它来跟踪对事务表中的行所做的更改。

于 2021-04-09T13:52:33.540 回答