Zeigen Sie den MySQL-Host über den SQL-Befehl an

96
Show Database
Use database
show tables
Describe <table>

Alles gut und gut, aber es ist möglich, den aktuellen Verbindungshost anzuzeigen. Nicht connection_id, sondern die IP-Adresse oder der Name des Hosts.

Craig Stewart
quelle

Antworten:

197

So erhalten Sie den aktuellen Hostnamen: -

select @@hostname;
show variables where Variable_name like '%host%';

So erhalten Sie Hosts für alle eingehenden Anfragen:

select host from information_schema.processlist;

Aufgrund Ihres letzten Kommentars
glaube ich nicht, dass Sie die IP-Adresse für den Hostnamen mithilfe der reinen MySQL-Funktion auflösen können,
da hierfür eine Netzwerksuche erforderlich ist, die lange dauern kann .

In MySQL-Dokumenten wird jedoch Folgendes erwähnt:

resolveip google.com.sg

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

ajreal
quelle
Ich habe keinen Remote-Host zum Testen am Geldautomaten, aber "SELECT @@ Hostname" gibt meinen lokalen Host an. Wenn die MySQL-Sitzung mit einem anderen Host verbunden ist, wird der Name des Remote-Hosts angezeigt? Kann ich IP bekommen?
Craig Stewart
Ja, es wird ein anderer Host angezeigt, wenn Sie von einem anderen Host stammen. Die entsprechende IP aufzulösen ist jedoch etwas schwierig ...
Ajreal
Ist es möglich, IP von My-SQL zu erhalten? Das wäre toll. Bis zu einer Stimme für @@ Hostname, danke !! Akzeptiert, wenn nicht möglich auf IP
Craig Stewart
Rufen Sie über die Befehlszeile die aktuell verbundene Remote-Host-IP in SQL ab. Grund, Langlebigkeit eines Skripts Ich kann in meinem Code nicht 100% sicher sein, dass wir mit demselben Host verbunden sind !!
Craig Stewart
Malaysisch, aber Singapur PR.
Ajreal
17

Vielleicht

mysql> show processlist;
Adrian Cornish
quelle
1
Dies ist ein schlechter Vorschlag, wenn Sie versuchen, remote zuzugreifen.
Vijay Kumar Kanta
6

Ich denke, Sie versuchen, den Remote-Host des vernetzten Benutzers zu bekommen ...

Sie können einen String wie 'myuser @ localhost' über den folgenden Befehl abrufen:

SELECT USER()

Sie können dieses Ergebnis auf dem @ -Zeichen aufteilen, um die Teile zu erhalten:

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

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

Wenn Sie über eine IP-Adresse eine Verbindung herstellen, erhalten Sie die IP-Adresse anstelle des Hostnamens.

Radon8472
quelle
1
show variables where Variable_name='hostname'; 

Das könnte dir helfen !!

Gowtham Vakani
quelle
Interessante meine geben damit nichts zurück.
Vitor Canova
Dies gibt den Server-Hostnamen zurück, nicht den Client-Hostnamen für die Verbindung, wie angefordert ...
Hartmut Holzgraefe