無法連線遠端mysql資料庫解決方案
阿新 • • 發佈:2022-05-04
請注意,這裡使用的是ubuntu 16.04 LTS版本系統,如系統不同,可能無法生效。
在這裡先假設兩條資料:
資料庫伺服器IP地址為:192.168.2.1
本地IP地址為:192.168.1.1
解決方案1:註冊一個MySQL使用者
在資料庫伺服器上,使用root登陸進入命令列後執行以下語句:
grant all privileges on *.* to [email protected] identified by '123456';
//user為使用者名稱,192.168.1.1為本地地址,'123456'為設定的密碼。
//按照自己需要自行配置
flush privileges;
flush privileges 命令本質上的作用是將當前user和privilige表中的使用者資訊/許可權設定從mysql庫(MySQL資料庫的內建庫)中提取到記憶體裡。MySQL使用者資料和許可權有修改後,希望在"不重啟MySQL服務"的情況下直接生效,那麼就需要執行這個命令。通常是在修改ROOT帳號的設定後,怕重啟後無法再登入進來,那麼直接flush之後就可以看許可權設定是否生效。而不必冒太大風險。
然後在本地連線資料庫
mysql -h 192.168.2.1 -u user -p 123456
解決方案2:設定防火牆
使用以下語句檢查3306埠是否已開放
telnet 192.168.2.1 3306
如3306埠已開放,請參考另外兩個方法
使用一下語句新增3306埠號
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
-A INPUT :表明我們要將此規則追加到某個鏈的最後,由於我們要操作INPUT連結,所以這麼寫。
-j ACCEPT :這個引數用於指定匹配的資料包的目標。用在這裡表示接受和允許符合上述標準的資料包通過。
實在不行就恢復預設策略
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
或者直接解除安裝。。。
sudo apt remove iptables
解決方案3:修改bind-address
進入到/etc/mysql/mysql.conf.d目錄中
cd /etc/mysql/mysql.conf.d
修改其中的mysqld.cnf檔案,將其中的bind-address = 127.0.0.1註釋起來
重啟mysql
sudo service mysql restart