Mostrar host MySQL via comando SQL

96
Show Database
Use database
show tables
Describe <table>

Tudo bem e bem, mas é possível mostrar as conexões atuais do host. Não connection_id, mas o endereço IP ou nome do host.

Craig Stewart
fonte

Respostas:

197

Para obter o nome do host atual: -

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

Para obter hosts para todas as solicitações de entrada: -

select host from information_schema.processlist;

Com base em seu último comentário,
não acho que você possa resolver o IP para o nome do host usando a função mysql pura,
pois isso requer uma pesquisa de rede, o que pode levar muito tempo.

No entanto, o documento mysql menciona isso: -

resolveip google.com.sg

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

ajreal
fonte
Não tenho um host remoto para testar no ATM, mas "SELECT @@ hostname" fornece meu host local. Se a sessão MySQL estiver conectada a um host diferente, ela mostrará o nome do host remoto? Posso obter IP?
Craig Stewart
Sim, ele mostrará um host diferente se você vier de outro host. No entanto, resolver o IP correspondente é um pouco difícil ...
ajreal
É possível obter IP do My-SQL? Isso seria bom. Mais um voto para @@ Hostname, obrigado !! Aceitará se não for possível no IP
Craig Stewart
Usando a linha de comando, obtenha o IP do host remoto conectado atualmente no SQL. Razão, longevidade de um script Não posso ter 100% de certeza em meu código de que estamos conectados ao mesmo host !!
Craig Stewart
Malásia, mas Singapura PR.
ajreal
17

Talvez

mysql> show processlist;
Adrian Cornish
fonte
1
Esta é uma sugestão ruim se você estiver tentando acessar remotamente.
Vijay Kumar Kanta
6

Acho que você tenta obter o host remoto do usuário conectado ...

Você pode obter uma String como 'myuser @ localhost' no comando:

SELECT USER()

Você pode dividir este resultado no sinal '@', para obter as 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)

se você estiver conectando via endereço IP, obterá o ipadress em vez do nome do host.

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

Isso pode te ajudar !!

Gowtham Vakani
fonte
O meu interessante não retorna nada com isso.
Vitor Canova
Isso retorna o nome do host do servidor, não o nome do host do cliente para a conexão, conforme solicitado ...
Hartmut Holzgraefe