1. 程式人生 > 其它 >無法連線遠端mysql資料庫解決方案

無法連線遠端mysql資料庫解決方案

請注意,這裡使用的是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