Mostrar host MySQL a través del comando SQL

96
Show Database
Use database
show tables
Describe <table>

Todo bien y bien, pero ¿es posible mostrar las conexiones actuales del host? No connection_id, sino la dirección IP o el nombre del host.

Craig Stewart
fuente

Respuestas:

197

Para obtener el nombre de host actual: -

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

Para obtener hosts para todas las solicitudes entrantes: -

select host from information_schema.processlist;

Según su último comentario,
no creo que pueda resolver la IP para el nombre de host utilizando la función mysql pura,
ya que requiere una búsqueda de red, lo que podría llevar mucho tiempo.

Sin embargo, el documento mysql menciona esto: -

resolveip google.com.sg

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

ajreal
fuente
No tengo un host remoto para probar en ATM, pero "SELECT @@ hostname" da mi host local. Si la sesión MySQL está conectada a un host diferente, ¿mostrará el nombre de los hosts remotos? ¿Puedo obtener IP?
Craig Stewart
Sí, mostrará un host diferente si vienes de otro host. Sin embargo, resolver la IP correspondiente es un poco difícil ...
ajreal
¿Es posible obtener IP de My-SQL? Eso seria genial. Un voto para @@ Hostname, ¡gracias! Aceptará si no es posible en IP
Craig Stewart
Usando la línea de comando, obtenga la IP del host remoto conectado actual dentro de SQL. Razón, longevidad de un script No puedo estar 100% seguro dentro de mi código de que estemos conectados al mismo host.
Craig Stewart
Malasia, pero RP de Singapur.
ajreal
17

Tal vez

mysql> show processlist;
Adrian Cornish
fuente
1
Esta es una mala sugerencia si está intentando acceder de forma remota.
Vijay Kumar Kanta
6

Creo que intentas obtener el host remoto del usuario que se conecta ...

Puede obtener una cadena como 'myuser @ localhost' desde el comando:

SELECT USER()

Puede dividir este resultado en el signo '@' para obtener las partes:

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

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

si se conecta a través de una dirección IP, obtendrá la dirección IP en lugar del nombre de host.

Radón8472
fuente
1
show variables where Variable_name='hostname'; 

¡¡Eso podría ayudarte !!

Gowtham Vakani
fuente
Interesante la mía no devuelve nada con esto.
Vitor Canova
Esto devuelve el nombre de host del servidor, no el nombre de host del cliente para la conexión, como se solicitó ...
Hartmut Holzgraefe