Mysql

MySQL將特定登錄限制為單個IP地址

  • February 16, 2022

我正在嘗試設置一個 mysql 伺服器,其中包含一些可以從任何地方訪問的登錄名,以及來自具有靜態 IP 的單台機器的另一個登錄名(有效的 root 訪問)。兩台機器都有一個 WAN 地址,並且位於同一個託管伺服器設施中。唯一存在的防火牆是作業系統中內置的防火牆。

主機(81.1.1.1/SERVER-4XP5PS5/mysql_win64 5.5/svr2012r2):

防火牆埠翻譯:

netsh interface portproxy add v4tov4 listenport=5001 connectport=3306 connectaddress=81.1.1.1 protocol=tcp
Advanced Firewall Rules->Add inbound open port 'MySQL5001' / port 5001 / tcp / All connection types

mysql遠端登錄:

create user 'testuser'@'82.2.2.2' identified by 'testpassword';
grant all on *.* to 'testuser'@'82.2.2.2';

客戶端(82.2.2.2 / mysql_win32 5.5 / svr2012r2):

mysql.exe -h81.1.1.1 -P5001 -utestuser -ptestpassword
ERROR 1045 (28000): Access denied for user 'testuser'@'SERVER-4XP5PS5' (using password: YES)

主機上的 mysql 伺服器似乎認為連接來自本地電腦,但事實並非如此,我正在從客戶端電腦執行 mysql connect 命令。

任何想法如何讓 mysql 讓 testuser 通過埠 5001 連接,同時限制 testuser 連接到 ip 82.2.2.2 ?

注意:如果我失去了 IP 地址要求並將 82.2.2.2 替換為 %,它可以正常工作,但這違背了我想要實現的目的。

感謝您的貢獻-儘管我發現了解決方法。我可以更改 my.ini 並設置我想要的埠,而不是使用 Windows 防火牆進行埠轉換。而不是創建使用者,我只是創建授權:

grant all on *.* to 'testuser'@'82.2.2.2' identified by 'testpassword';

即使您的電腦具有靜態 IP 地址(例如:81.1.1.1),這並不意味著在嘗試連接時您的電腦在網路上被辨識為 81.1.1.1。

您的電腦所擁有的地址 - 當連接到 Internet 上的電腦時 - 使用所謂的“NAT 網關地址”。

所以…登錄到 81.1.1.1,如果它是 Windows 機器瀏覽:http ://whatismyipaddress.com

那是您的 NAT 網關 IP 地址。

如果您只能訪問 81.1.1.1 上的 Powershell - 而不是瀏覽 - 您可以改用 curl。

捲曲http://bot.whatismyipaddress.com

如果您在 Linux 上,使用 curl 幾乎是您唯一的選擇。

我認為您的解決方法成功了,因為 mysql 命令行讀取了命令行參數並傳遞了驗證真實的傳入 IP 地址。它使用 81.1.1.1 作為模擬。

啊,如果你根本不使用靜態IP,你會好很多。如果您需要有關該文章的幫助,請提出“如何將您的工作站配置為網路上的完全合格主機”之類的問題。

你的問題的答案。如何限制對單個 IP 的訪問… 您必須設置 VPN 並且只允許來自已知 NAT 網關的請求。不要允許來自所有 Comcast 的 NAT 網關 - 否則任何人仍然可以進入。有時為了解決這個問題,您允許授權使用者連接到您的網路。然後從那裡允許來自 NAT 網關的連接。

引用自:https://dba.stackexchange.com/questions/237655