![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 bon ![]()
![]() |
我想要取得連線用戶端的 IP 位址,但透過「select host from information_schema.processlist WHERE ID=connection_id()」取得的 host 可能會是 localhost、DESKTOP_ABC、John's PC 等等。但我需要的是 192.168.1.100 這種IP位址資訊,請問該如何取得? |
1樓
作者回應
bon ![]() |
補充說明:
我的目標是當一個使用者允許從兩組不同的 IP 位址連入時,判斷該使用者是以哪一組 IP 登入並執行不同的動作。 Ex: user@192.168.1.%、user@10.0.0.% 目前已找到可行解是執行「SELECT CURRENT_USER()」即可知道對方連線所使用的 User。
本篇文章回覆於2020-06-11 13:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
最有價值解答
浩瀚星空 ![]() ![]() |
說真的,第一次看到有人將mysql當程序運行用。
倒是有點讓人覺得配服 認真來說,mysql並沒辦法像後端程式一樣,能取得標頭及來源的ip。 你上面的手法,都是利用mysql本身的一些記錄來取得資料的。 也就是去取目前mysql的進程資料。 你可以用如下的語法 SELECT substring_index(host, ':',1) AS host_name,state,count(*) FROM information_schema.processlist GROUP BY state,host_name 可是,這些出來的資料是只代表目前有的連線。不代表當前的連線。 基本上來說還是 SELECT CURRENT_USER() 是最接近你的理想的。 就理論上來說。如果你要讓不同ip做不同的事。 你就該在新增user時就區分好。不要用 user@192.168.1.% 這樣的萬用符號。 這是你唯一能在mysql做到的事。 要不然還是乖乖的在後端語言來處理。(如果有的話)
本篇文章回覆於2020-06-11 16:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |