起因
今天在ubuntu16.04環(huán)境下通過mysql workbench訪問遠(yuǎn)程數(shù)據(jù)庫時,發(fā)現(xiàn)無法連接問題,解決思路及方法記錄如下,不足之處,請多指教。
問題
通過workbench輸入密碼訪問時報這個錯:
1
|
Your connection attempt failed for user 'root' from your host to server at 118.89.153.162:3306: Access denied for user 'root' @ '118.89.153.162' (using password: YES) |
思路
- 網(wǎng)絡(luò)問題,更換網(wǎng)絡(luò)之后重啟workbench和MySQL服務(wù)進(jìn)行連接,依舊是這個錯。
- 密碼錯誤,通過ssh遠(yuǎn)程登錄服務(wù)器查看遠(yuǎn)程mysql的password,發(fā)現(xiàn)所填密碼正確。
- 遠(yuǎn)程mysql沒有訪問權(quán)限,一般有兩種方法:改表法和授權(quán)法?? :
?授權(quán)法:
第一步:嘗試打開/etc/mysql/my.cnf配置文件,若文件不存在或者內(nèi)容為空,則打開下面的文件路徑:
1
2
3
|
sudo vim /etc/mysql/my .cnf // 或: sudo vim /etc/mysql/mysql .conf.d /mysqld .cnf |
第二步:在文件中查找下面一行,如果該行前沒有加#,可在該行前添加#進(jìn)行注釋,保存退出。
1
|
bind-address = 127.0.0.1 |
改表法:
1
2
3
4
5
6
7
8
|
mysql>use mysql; mysql>GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' WITH GRANT OPTION // 賦予任何主機訪問以及修改所有數(shù)據(jù)的權(quán)限 // 例如,你想root用戶使用root從任何主機連接到mysql服務(wù)器的話。 //GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' IDENTIFIED BY 'root' WITH GRANT OPTION; // 如果你想允許用戶root從ip為192.168.1.124的主機連接到mysql服務(wù)器,并使用123456作為密碼 //GRANT ALL PRIVILEGES ON *.* TO 'root' @ '192.168.1.124' IDENTIFIED BY '123456' WITH GRANT OPTION; mysql>flush privileges // 權(quán)限刷新,使修改立即生效 sudo /etc/init .d /mysql restart // 或: service mysql restart 重啟mysql服務(wù) |
兩種方法我嘗試了一下,錯誤類型變成了:
1
|
Can't connect to MySQL server on ... |
看到這個錯誤我想到了遠(yuǎn)程服務(wù)器防火墻的原因,于是我有了下面的思路:
4. 遠(yuǎn)程ubuntu服務(wù)器的防火墻原因?qū)е聼o法本地訪問遠(yuǎn)程的3306端口
1
|
sudo ufw disable // 關(guān)閉防火墻,該命令需在root權(quán)限下執(zhí)行,慎用 |
再次通過workbench連接遠(yuǎn)程mysql,連接成功。
原因
我的本地?zé)o法連接遠(yuǎn)程是因為遠(yuǎn)程ubuntu服務(wù)器防火墻默認(rèn)禁止外部訪問3306端口。
做法
1
2
|
sudo ufw enable // 開啟防火墻 sudo ufw allow 3306 // 允許外部訪問3306端口 |
總結(jié)
1. 一般的無法連接遠(yuǎn)程mysql問題是由上面四個愿意導(dǎo)致的,這里不做贅述。
2. 在遇到一個問題時首先要做的不是立刻找做法解決這個問題,而應(yīng)該是思考為什么會出現(xiàn)這個問題,產(chǎn)生這個問題的原因,做到對癥下藥。
3. 自己還有很多不足,戒驕戒躁才能進(jìn)步。
附贈
Ubuntu常用ufw防火墻命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
// 安裝方法 sudo apt-get install ufw ? // 啟用 sudo ufw enable sudo ufw default deny // 開啟了防火墻并隨系統(tǒng)啟動同時關(guān)閉所有外部對本機的訪問,本機訪問外部正常。 // 關(guān)閉 sudo ufw disable // 查看防火墻狀態(tài) sudo ufw status // 開啟/禁用相應(yīng)端口或服務(wù)舉例 sudo ufw allow 3306 // 允許外部訪問3306端口 sudo ufw delete allow 3306 禁止外部訪問3306端口 ? sudo ufw allow from 118.89.153.162 // 允許此IP訪問所有的本機端口 sudo ufw deny smtp // 禁止外部訪問smtp服務(wù) sudo ufw delete allow smtp // 刪除上面建立的某條規(guī)則 sudo ufw deny proto tcp from 10.0.0.0 /8 to 192.168.0.1 port 22 // 要拒絕所有的TCP流量從10.0.0.0 /8 到192.168.0.1地址的22端口 // 推薦使用 sudo apt-get install ufw sudo ufw enable sudo ufw default deny |
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對主機吧的支持。