我想知道mysql查询是否有办法返回发出查询的用户的用户名。这可能吗?
hpcdzsge1#
也试着逃跑
SELECT USER();
字符串或
SELECT CURRENT_USER();
型有时候可能会有所不同,USER()将返回您尝试进行身份验证的登录名,而CURRENT_USER()将返回您实际上是如何被允许进行身份验证的。
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
CURRENT_USER()
USER()
u3r8eeie3#
使用此查询:
SELECT CURRENT_USER;
型
x7yiwoj44#
您可以用途:
型更多信息请访问http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
j1dl9f465#
打印正在使用数据库的当前用户
select user();
select current_user();
w51jfk4q6#
在MySQL中,可以使用CURRENT_USER()函数查找当前用户名。例如:SELECT CURRENT_USER();但是CURRENT_USER()并不总是返回登录的用户。所以如果你想拥有登录的用户,那么就使用SESSION_USER()。
SESSION_USER()
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 | +---------------+-------------------------------+
字符串
bxpogfeg8#
我需要这样一个功能,我使用了CURRENT_USER(),但这给了我全局管理员用户,即使我在连接到数据库时更改了查询用户名,它对每个查询都是相同的。显然,这在我正在寻找的用例中是无用的。然后我使用了USER(),它给了我发起查询的连接字符串的用户名。如果我理解了这个问题,这就是人们想要的简单语言。在我的例子中,我在触发器中使用它来跟踪对事务表中的行所做的更改。
omjgkv6w9#
可以使用CURRENT_USER()、CURRENT_USER或USER()显示当前用户,如下所示:
字符串或者:
型或者:
型小心,USER不退出,所以它得到错误,如下所示:
USER
SELECT USER;
型错误1054(42S22):“字段列表”中的未知列“USER”现在,CURRENT_USER()或CURRENT_USER和USER()之间的区别是:
CURRENT_USER
例如,您使用%创建用户john,这意味着任何主机,如下所示:
%
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 | +----------------+
9条答案
按热度按时间hpcdzsge1#
也试着逃跑
字符串
或
型
有时候可能会有所不同,USER()将返回您尝试进行身份验证的登录名,而CURRENT_USER()将返回您实际上是如何被允许进行身份验证的。
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
u3r8eeie3#
使用此查询:
字符串
或
型
x7yiwoj44#
您可以用途:
字符串
或
型
更多信息请访问http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
j1dl9f465#
打印正在使用数据库的当前用户
字符串
或
型
w51jfk4q6#
在MySQL中,可以使用CURRENT_USER()函数查找当前用户名。
例如:
SELECT CURRENT_USER();
但是
CURRENT_USER()
并不总是返回登录的用户。所以如果你想拥有登录的用户,那么就使用SESSION_USER()
。whhtz7ly7#
也可以使用:用途:mysql> select user,host from mysql.user;
字符串
bxpogfeg8#
我需要这样一个功能,我使用了CURRENT_USER(),但这给了我全局管理员用户,即使我在连接到数据库时更改了查询用户名,它对每个查询都是相同的。显然,这在我正在寻找的用例中是无用的。然后我使用了USER(),它给了我发起查询的连接字符串的用户名。如果我理解了这个问题,这就是人们想要的简单语言。在我的例子中,我在触发器中使用它来跟踪对事务表中的行所做的更改。
omjgkv6w9#
可以使用CURRENT_USER()、CURRENT_USER或USER()显示当前用户,如下所示:
字符串
或者:
型
或者:
型
小心,
USER
不退出,所以它得到错误,如下所示:型
错误1054(42S22):“字段列表”中的未知列“USER”
现在,
CURRENT_USER()
或CURRENT_USER
和USER()
之间的区别是:CURRENT_USER()
或CURRENT_USER
返回当前用户的名称和主机。USER()
返回当前用户的名称,但返回您连接的主机。例如,您使用
%
创建用户john
,这意味着任何主机,如下所示:型
然后,使用用户
john
从运行MySQL的服务器(localhost)登录,如下所示:型
然后,
CURRENT_USER()
或CURRENT_USER
返回当前用户的名称和主机,如下所示:型
或者:
型
然后,
USER()
返回当前用户的名称,但返回您连接的主机。型