通过SQL命令显示MySQL主机

问题描述 投票:0回答:5
Show Database
Use database
show tables
Describe <table>

一切都很好,但是是否可以显示当前的连接主机。 不是connection_id,而是主机的IP 地址或名称。

mysql sql database
5个回答
233
投票

获取当前主机名:-

select @@hostname;
show variables  like "%host%";

获取所有传入请求的主机:-

select host from information_schema.processlist;

根据您最后的评论,
我不认为你可以使用纯 mysql 函数解析主机名的 IP,
因为它需要网络查找,这可能需要很长时间。

但是,mysql文档提到了这一点:-

resolveip google.com.sg

文档:- http://dev.mysql.com/doc/refman/5.0/en/resolveip.html


19
投票

也许

mysql> show processlist;

10
投票

我认为您尝试获取连接用户的远程主机...

您可以从命令中获取类似“myuser@localhost”的字符串:

SELECT USER()

您可以将此结果拆分到“@”符号上,以获得各个部分:

-- delivers the "remote_host" e.g. "localhost" 
SELECT SUBSTRING_INDEX(USER(), '@', -1) 

-- delivers the user-name e.g. "myuser"
SELECT SUBSTRING_INDEX(USER(), '@', 1)

如果您通过 IP 地址连接,您将获得 IP 地址而不是主机名。


7
投票
show variables where Variable_name='hostname'; 

这可以帮助你!


0
投票

好吧,我在 MySQL 上进行了启动,并且一切都开始按预期工作...连接到 MySQL 的应用程序服务器,全部位于不同的服务器,Ubuntu Linux 中。

$ mysql -u sysprod -p -h dbprod --protocol=TCP
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.30-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
mysql> 
mysql> select user();
+----------------------------+
| user()                     |
+----------------------------+
| sysprod@dbprod |
+----------------------------+
1 row in set (0.00 sec)
© www.soinside.com 2019 - 2024. All rights reserved.