Afficher l'hôte MySQL via la commande SQL

97
Show Database
Use database
show tables
Describe <table>

Tout va bien, mais est-il possible de montrer l'hôte des connexions actuelles. Pas connection_id, mais l'adresse IP ou le nom de l'hôte.

Craig Stewart
la source

Réponses:

199

Pour obtenir le nom d'hôte actuel: -

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

Pour obtenir des hôtes pour toutes les demandes entrantes: -

select host from information_schema.processlist;

Sur la base de votre dernier commentaire,
je ne pense pas que vous puissiez résoudre l'IP du nom d'hôte en utilisant la fonction mysql pure,
car cela nécessite une recherche réseau, ce qui peut prendre beaucoup de temps.

Cependant, le document mysql mentionne ceci: -

resolveip google.com.sg

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

ajreal
la source
Je n'ai pas d'hôte distant à tester sur ATM, mais "SELECT @@ hostname" donne mon hôte local. Si la session MySQL est connectée à un hôte différent, affichera-t-elle le nom des hôtes distants? Puis-je obtenir une adresse IP?
Craig Stewart
Oui, il affichera un hôte différent si vous venez d'un autre hôte. Cependant, résoudre l'IP correspondante est un peu difficile ...
ajreal
Est-il possible d'obtenir une adresse IP depuis My-SQL? Ce serait génial. Un vote pour @@ Hostname, merci !! Acceptera sinon possible sur IP
Craig Stewart
À l'aide de la ligne de commande, obtenez l'adresse IP de l'hôte distant actuellement connecté dans SQL. Raison, longévité d'un script Je ne peux pas être sûr à 100% dans mon code que nous sommes connectés au même hôte !!
Craig Stewart
Malaisie, mais Singapour PR.
ajreal
17

Peut être

mysql> show processlist;
Adrian Cornish
la source
1
C'est une mauvaise suggestion si vous essayez d'accéder à distance.
Vijay Kumar Kanta
6

Je pense que vous essayez d'obtenir l'hôte distant de l'utilisateur connecté ...

Vous pouvez obtenir une chaîne comme 'myuser @ localhost' à partir de la commande:

SELECT USER()

Vous pouvez diviser ce résultat sur le signe '@', pour obtenir les parties:

-- 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 vous connectez via l'adresse IP, vous obtiendrez l'ipadress au lieu du nom d'hôte.

Radon8472
la source
1
show variables where Variable_name='hostname'; 

Cela pourrait vous aider !!

Gowtham Vakani
la source
Le mien intéressant ne retourne rien avec ça.
Vitor Canova
Cela renvoie le nom d'hôte du serveur, pas le nom d'hôte du client pour la connexion, comme demandé ...
Hartmut Holzgraefe