2011-11-27 75 views

回答

139

要獲取當前的主機名: -

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

要獲取主機的所有傳入的請求: -

select host from information_schema.processlist; 

根據您最後的評論,
我不認爲你可以解決IP使用純MySQL的功能,
因爲它需要一個網絡查找,這可能是需要長時間的主機名。

然而,MySQL的文件提到這一點: -

resolveip google.com.sg 

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

+0

我沒有遠程主機在ATM上測試,但「SELECT @@ hostname」給我的本地主機。如果MySQL會話連接到不同的主機,它會顯示遠程主機名?我可以獲得IP嗎? –

+0

是的,如果你來自其他主機,它會顯示不同的主機。然而,解決相應的IP是有點難... – ajreal

+0

是否有可能從My-SQL獲得IP?那太好了。爲@@主機名投一票,謝謝!將接受IP如果不可能 –

16

也許

mysql> show processlist; 
+1

這是一個糟糕的建議,如果你想遠程訪問。 –

2

我想你試圖讓conneting用戶的遠程主機.. 。

你可以像在命令「爲myuser @本地」的字符串:

SELECT USER() 

您可以在「@」符號分割這一結果,得到部分:

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

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

,如果你是通過IP地址conneting你會得到ipadress而不是主機名。

0
show variables where Variable_name='hostname'; 

,可以幫助你!