6

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

如同

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

编辑:

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

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

4

7 回答 7

7

选择@@主机名;

--mysql 4.1 没有这个。

于 2011-10-21T09:38:36.563 回答
3

他的工作不会吗?

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

以上是错误的,它返回的是用户的 IP 而不是主机的。我被本地测试愚弄了。对于那个很抱歉。


grep我想这会返回主机名,但除非你准备好,否则这不会有用,pipe而且cut仅供参考:

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
于 2011-01-06T14:09:20.243 回答
3

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

mysql> SHOW VARIABLES LIKE 'hostname';

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

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

于 2013-01-08T21:22:26.347 回答
3
select current_user(); returns user@10.0.3.% last simbol is % why ??

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

可以从

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

%主机值决定。

于 2011-01-06T14:36:08.873 回答
2

您可以使用user()current_user()功能。如果你只想主机名做类似的事情 select substr(current_user(),LOCATE('@', current_user())+1) AS localhost;
你可以在这里找到详细信息

于 2011-01-06T14:11:16.403 回答
2

您是否正在寻找CURRENT_USER功能。

返回服务器用于验证当前客户端的 MySQL 帐户的用户名和主机名组合。此帐户决定您的访问权限。

CURRENT_USER() 的值可以不同于 USER() 的值。

于 2011-01-06T14:05:44.683 回答
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                  |
+---------------------------------------+
于 2013-12-03T14:24:00.610 回答