为什么MySQL内置函数'current_user()'返回包含'%'符号的主机名?

时间:2011-01-06 14:03:16

标签: mysql hostname

MySQL是否具有内置函数来获取主机名?

相似
select user(); //this returns  user@userip

编辑:

select current_user(); //returns user@10.0.3.%

最后一个符号是% - 为什么?

7 个答案:

答案 0 :(得分:7)

SELECT @@ hostname;

- mysql 4.1没有这个。

答案 1 :(得分:3)

不会他的工作?

  

选择substring_index(user(),'@', - 1)作为主机名;

以上是错误的,它返回用户的IP而非主机。我被本地测试所欺骗。对不起。


我想这会返回主机名,但除非您准备好greppipecut只是一个FYI,否则这没有用:

C:\>mysqladmin -u username -pmypassword -h dev.naishelabs.com version

mysqladmin  Ver 8.41 Distrib 5.0.22, for Win32 on ia32
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.77
Protocol version        10
Connection              dev.naishelabs.com via TCP/IP
TCP port                3306
Uptime:                 73 days 5 hours 7 min 45 sec

答案 2 :(得分:3)

select current_user(); returns user@10.0.3.% last simbol is % why ??

%是mysql.user中与当前登录名匹配的记录

可以从

派生
select concat(user, '@', host) from mysql.user;

%由主机值决定。

答案 3 :(得分:3)

如果您想要数据库服务器的主机名,可以使用SHOW VARIABLES:

mysql> SHOW VARIABLES LIKE 'hostname';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| hostname      | munda |
+---------------+-------+
1 row in set (0.00 sec)

它不是内置函数,因此不能在SELECT语句中使用。

答案 4 :(得分:2)

您是否正在寻找CURRENT_USER功能。

  

返回用户名和主机名   组合为MySQL帐户   用于验证的服务器   现任客户。此帐户   确定您的访问权限。

     

CURRENT_USER()的值可能不同   来自USER()的值。

答案 5 :(得分:2)

您可以使用user()current_user()功能。如果您只想要主机名,请执行select substr(current_user(),LOCATE('@', current_user())+1) AS localhost;之类的操作 您可以找到详细信息here

答案 6 :(得分:1)

@@hostname变量包含系统主机名:

$ cat /etc/hostname
bruno

$ hostname
bruno

$ mysql
mysql> SELECT @@hostname;
+------------+
| @@hostname |
+------------+
| bruno      |
+------------+

请注意,这可以合并并在其他查询中使用:

mysql> SELECT name, @@hostname FROM people;
+-------+-------------+
| name  | @@hostname  |
+-------+-------------+
| Dotan | bruno       |
+-------+-------------+

mysql> SELECT CONCAT('I am on server ', @@hostname);
+---------------------------------------+
| CONCAT('I am on server ', @@hostname) |
+---------------------------------------+
| I am on server bruno                  |
+---------------------------------------+