MySQL 是否有内置函数来获取主机名?
如同
select user(); //this returns user@userip
编辑:
select current_user(); //returns user@10.0.3.%
最后一个符号是%
——为什么?
选择@@主机名;
--mysql 4.1 没有这个。
他的工作不会吗?
选择 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
如果你想要数据库服务器的主机名,你可以使用 SHOW VARIABLES:
mysql> SHOW VARIABLES LIKE 'hostname';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| hostname | munda |
+---------------+-------+
1 row in set (0.00 sec)
它不是内置函数,因此不能在 SELECT 语句中使用。
select current_user(); returns user@10.0.3.% last simbol is % why ??
这%
是 mysql.user 中与您当前登录匹配的记录
可以从
select concat(user, '@', host) from mysql.user;
由%
主机值决定。
您可以使用user()
和current_user()
功能。如果你只想主机名做类似的事情 select substr(current_user(),LOCATE('@', current_user())+1) AS localhost;
你可以在这里找到详细信息
您是否正在寻找CURRENT_USER功能。
返回服务器用于验证当前客户端的 MySQL 帐户的用户名和主机名组合。此帐户决定您的访问权限。
CURRENT_USER() 的值可以不同于 USER() 的值。
该@@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 |
+---------------------------------------+