在MySQL中显示当前用户名?

9fkzdhlc  于 2023-11-16  发布在  Mysql
关注(0)|答案(9)|浏览(155)

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

hpcdzsge

hpcdzsge1#

也试着逃跑

SELECT USER();

字符串

SELECT CURRENT_USER();


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

lb3vh1jj

lb3vh1jj2#

尝试CURRENT_USER()函数。该函数返回MySQL用于验证客户端连接的用户名。正是该用户名决定了您的权限。
这可能与客户端发送给MySQL的用户名不同(例如,MySQL可能使用匿名帐户来验证您的客户端,即使您发送了用户名)。如果您希望客户端在连接时发送给MySQL的用户名,请使用USER()函数。
该值指示连接到服务器时指定的用户名,以及从其连接的客户端主机。该值可以与CURRENT_USER()的值不同。
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

u3r8eeie

u3r8eeie3#

使用此查询:

SELECT USER();

字符串

SELECT CURRENT_USER;

x7yiwoj4

x7yiwoj44#

您可以用途:

SELECT USER();

字符串

SELECT CURRENT_USER();


更多信息请访问http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

j1dl9f46

j1dl9f465#

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

select user();

字符串

select current_user();

w51jfk4q

w51jfk4q6#

在MySQL中,可以使用CURRENT_USER()函数查找当前用户名。
例如:SELECT CURRENT_USER();
但是CURRENT_USER()并不总是返回登录的用户。所以如果你想拥有登录的用户,那么就使用SESSION_USER()

whhtz7ly

whhtz7ly7#

也可以使用:用途: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                     |
+---------------+-------------------------------+

字符串

bxpogfeg

bxpogfeg8#

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

omjgkv6w

omjgkv6w9#

可以使用CURRENT_USER()、CURRENT_USER或USER()显示当前用户,如下所示:

SELECT CURRENT_USER();

字符串
或者:

SELECT CURRENT_USER;


或者:

SELECT USER();


小心,USER不退出,所以它得到错误,如下所示:

SELECT USER;


错误1054(42S22):“字段列表”中的未知列“USER”
现在,CURRENT_USER()CURRENT_USERUSER()之间的区别是:

  • CURRENT_USER()CURRENT_USER返回当前用户的名称和主机。
  • USER()返回当前用户的名称,但返回您连接的主机。

例如,您使用%创建用户john,这意味着任何主机,如下所示:

CREATE USER 'john'@'%';


然后,使用用户john从运行MySQL的服务器(localhost)登录,如下所示:

mysql -u john


然后,CURRENT_USER()CURRENT_USER返回当前用户的名称和主机,如下所示:

mysql> SELECT CURRENT_USER(); 
+----------------+
| CURRENT_USER() |
+----------------+
| john@%         |
+----------------+


或者:

mysql> SELECT CURRENT_USER;
+--------------+
| CURRENT_USER |
+--------------+
| john@%       |
+--------------+


然后,USER()返回当前用户的名称,但返回您连接的主机。

mysql> SELECT USER();
+----------------+
| USER()         |
+----------------+
| john@localhost |
+----------------+

相关问题