在阿里雲的服務器上安裝了MySQL, 然后遠程訪問總是不通。 查詢了很久,排查思路如下:
- 檢查mysql是否啟動
- 檢查本機3306端口是否處於監聽狀態
- 檢查阿里雲控制台是否開啟了安全限制
- 檢查mysql用戶能否在遠程進行登錄
- mysql 的 bind-address 設置為 127.0.0.1
我們來一步步排查。
-
mysql是否啟動
這個比較簡單, ps -ef | grep mysql 如果能看到對應的進程就是沒有問題的 -
檢查本機3306端口是否處於監聽狀態
可以通過netstat -tlanp | grep 3306 來看mysql是否在監聽。 如果本地端口監聽狀態 telnet 127.0.0.1 3306 看看是否成功, 如果成功, 則 在遠程 telnet 公網ip 3306 來判斷一下是否成功, 如果成功說明沒有問題, 如果失敗,繼續往下看 -
檢查阿里雲控制台是否開啟了安全限制
阿里雲默認是不會打開 3306端口的, 需要進行設置, 設置方法見: https://help.aliyun.com/document_detail/25471.html?spm=5176.11065259.1996646101.searchclickresult.42468fa7McebNN -
檢查mysql用戶能否在遠程進行登錄
這個主要是在新建mysql用戶的時候 授權ip需要填寫 % , 可以在遠程進入mysql然后查詢下。
$ sudo mysql -u root -p
進入mysql客戶端之后,
use mysql;
select * from user;
查看一下 host 是否為 %
- mysql 的 bind-address 設置為 127.0.0.1
要找到bind-address的設置, 需要找到mysql的配置文件
$ sudo find / -name my.cnf
這個時候就能看到所有的配置相關的文件, 我看到的文件中有這么一段描述
'''
The MariaDB/MySQL tools read configuration files in the following order:
- "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
- "/etc/mysql/conf.d/*.cnf" to set global options.
- "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
- "~/.my.cnf" to set user-specific options.
'''
大意是根據根據 1,2,3,4的優先級來判斷,那么就根據這4個文件尋找一下,
最后在 vi /etc/mysql/mariadb.conf.d/50-server.cnf 這個文件中找到了 bind-address 127.0.0.1 修改之后, 就完成了