Pokaż hosta MySQL za pomocą polecenia SQL

97
Show Database
Use database
show tables
Describe <table>

Wszystko dobrze, ale czy można pokazać aktualnego hosta połączeń. Nie identyfikator_połączenia, ale adres IP lub nazwa hosta.

Craig Stewart
źródło

Odpowiedzi:

199

Aby uzyskać aktualną nazwę hosta: -

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

Aby uzyskać hosty dla wszystkich przychodzących żądań: -

select host from information_schema.processlist;

Na podstawie Twojego ostatniego komentarza
nie sądzę, abyś mógł rozwiązać IP dla nazwy hosta za pomocą czystej funkcji mysql,
ponieważ wymaga to wyszukiwania sieci, co może zająć dużo czasu.

Jednak dokument mysql wspomina o tym: -

resolveip google.com.sg

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

ajreal
źródło
Nie mam zdalnego hosta do przetestowania w ATM, ale „SELECT @@ nazwa hosta” podaje mój lokalny host. Jeśli sesja MySQL jest połączona z innym hostem, czy pokaże nazwę zdalnego hosta? Czy mogę otrzymać adres IP?
Craig Stewart
Tak, pokaże innego gospodarza, jeśli pochodzisz z innego gospodarza. Jednak rozwiązanie odpowiedniego adresu IP jest trochę trudne ...
ajreal
Czy można uzyskać adres IP z My-SQL? Byłoby świetnie. Jeden głos na @@ Nazwa hosta, dziękujemy !! Przyjmie, jeśli nie będzie to możliwe na IP
Craig Stewart
Korzystając z wiersza poleceń, pobierz aktualny adres IP podłączonego zdalnego hosta w SQL. Przyczyna, długowieczność skryptu Nie mogę być w 100% pewien w moim kodzie, że jesteśmy połączeni z tym samym hostem !!
Craig Stewart
Malezyjski, ale singapurski PR.
ajreal
17

Może

mysql> show processlist;
Adrian Cornish
źródło
1
To zła sugestia, jeśli próbujesz uzyskać dostęp zdalny.
Vijay Kumar Kanta
6

Myślę, że próbujesz zdobyć zdalnego hosta łączącego się użytkownika ...

Możesz uzyskać ciąg, taki jak „myuser @ localhost” z polecenia:

SELECT USER()

Możesz podzielić ten wynik na znak „@”, aby otrzymać części:

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

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

jeśli łączysz się przez adres IP, zamiast nazwy hosta otrzymasz ipadress.

Radon8472
źródło
1
show variables where Variable_name='hostname'; 

To mogłoby ci pomóc !!

Gowtham Vakani
źródło
Interesujące moje nic nie zwracają z tym.
Vitor Canova
To zwraca nazwę hosta serwera, a nie nazwę hosta klienta dla połączenia, zgodnie z żądaniem ...
Hartmut Holzgraefe