ubuntu系統安裝的MySql數據庫,遠程不能訪問的幾種可能問題


安裝MySQL數據庫后一般會遇到遠程計算機不能連接的問題,具體問題需要我們排查。

可能一:MySql數據庫是否提供了外部訪問的用戶以及權限?
可能二:MySql的配置文件是否只綁定了本機ip(ubuntu下:/etc/mysql/mysql.conf.d/mysqld.cnf)?
可能三:操作系統的防火牆不允許外部訪問3306端口

本文實例發生的環境是ubuntu16.04,MySql5.7。

排查一:在安裝了MySql數據庫的計算機上,
命令行進入mysql:mysql -u root -p
並輸入用戶root的密碼:

 執行語句:select user, host from user;

如果是上述結果,則說明沒有設定外部訪問的用戶,接下來我們給root用戶賦予外部訪問的權限,執行2條語句:
grant all privileges on *.* to 'root'@'192.168.3.%' identified by 'password' with grant option;
flush privileges;
注意password是你給root設定的密碼,注意拼寫,一切ok后再次查看user表內的內容

 

紅框里的那條記錄就是剛才我們用grant命令添加的,它的意思是局域網內192.168.3.0-192.68.3.255的ip主機都可以通過用戶root和密碼password來訪問。

這里解釋一下grant語句格式
mysql> grant 權限1,權限2,…權限n on 數據庫名.表名 to 用戶名@用戶地址 identified by ‘用戶密碼’ with grant option;
權限1,權限2,…代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等權限。
如果是all privileges或者all,表示賦予用戶全部權限。
如果數據庫名.表名被*.*代替,表示賦予該用戶可以操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址。
‘用戶密碼’必須提供。
最后的 with grant option 表示權限傳遞,意思是允許該用戶將其權限分配給其他人。

以上所有操作也可在圖形界面完成,如果你的ubuntu上安裝了MySql Workbench會很方便:

 

排查二:配置文件是否只綁定了本機ip,使用gedit文本編輯器打開mysql的配置文件,把bind-address = 127.0.0.0這行注釋掉(句首加上#),當然,也可以綁定你所需的主機,ubuntu終端執行:sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

 

保存退出,ubuntu終端執行:service mysql restart,或者手動重啟mysql,或者重啟系統。
另外,重啟之后你可以使用 netstat -an|grep 3306 命令來查看端口情況:

紅框內是注釋掉bind-address后才有的,未注釋前沒有。

排查三:關於操作系統的防火牆不允許外部訪問3306端口,請根據操作系統自行排查。


END.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM