無法遠端訪問在 Mac OS X 上執行的 MySQL 伺服器
我的工作電腦上執行著一個 MySQL 伺服器,它執行 Mac OS X Maverick。我想從也有 Mac OS Maverick 的家用電腦上訪問它。
從終端,如果在 1 個選項卡中,我 ssh 進入我的工作電腦並讓 ssh 會話坐在那里而不是空閒,然後在另一個選項卡上,我可以訪問 MySQL 伺服器。
但是,如果沒有執行 ssh 會話,我將收到以下錯誤
**錯誤 2003 (HY000):**無法連接到“SERVER_IP_ADDRESS”上的 MySQL 伺服器 (60)
我試圖
my.cnf
通過註釋掉綁定地址或將其分配給它來修改伺服器上的文件,0.0.0.0
但它不起作用。為什麼會這樣?如何配置伺服器以允許遠端訪問而無需在客戶端上執行 ssh?有人可以幫忙嗎?
今天我一直在用最近用 Homebrew 更新的 MySQL 5.7 在 OSX Yosemite 上解決這個錯誤。根據 StackOverflow 和其他地方的建議,我四處尋找
my.cnf
所有指定bind-address=0.0.0.0
. 我什至按照這些說明刪除並重新安裝了 MySQL,然後使用brew install mysql
. 仍然不允許遠端連接。直到我執行
ps -ax | grep mysql
並註意到綁定地址在啟動命令中傳遞(從而覆蓋任何my.cnf
文件),我才探勘了更多並發現Homebrew 預設將 MySQL 綁定到 127.0.0.1。編輯
~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
更改--bind-address=127.0.0.1
以--bind-address=0.0.0.0
解決我的問題(如果這不僅僅是一台開發機器,則後者應更改為特定的 IP 地址)。我覺得這是我諮詢過的大多數資源中缺少的重要資訊,因此希望在此處發布此資訊對其他人有所幫助!
**編輯:**正如LeandroCR在評論中指出的那樣,執行
brew services restart mysql
將用預設文件覆蓋 LaunchAgents 中的 plist 文件,導致 MySQL 再次神秘地拒絕連接。因此,比我最初寫的更好的建議如下:
- 編輯
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
並替換--bind-address=127.0.0.1
為bind-address=*
or--bind-address=0.0.0.0
(參見 MySQL 的 bind-address 文件)- 使用重啟mysql
brew services restart mysql
然後 MySQL 應該從那時起繼續接受非本地連接 - 大概直到你重新安裝它。
編輯(2019 年 9 月) Timothy Zorn指出,通過 Homebrew 安裝和執行的 MySQL 8.x 不再出現此問題,因此我在 2016 年編寫的上述答案可能僅與 5.x 相關。
執行
locate my.cnf
找到文件/usr/local/etc/my.cnf
- 編輯該文件並設置
bind-address = 0.0.0.0
- 重啟mysql:
brew services restart mysql