Mysql安裝後外部機器不能訪問的幾種原因
以下以Ubuntu系統為例,總結了自己遇到過的幾種安裝Mysql後外部機器不能訪問的問題原因。
1、最常見的是使用者許可權問題。
Mysql安裝後,預設只允許本機訪問Mysql,通過以下命令可以檢視:
mysql>use mysql;
mysql>select user, host from user;
+-----------------------------------+----------------------------------+
| user | host |
+-----------------------------------+----------------------------------+
| root | localhost |
| root | 127.0.0.1 |
| root | ubuntu |
+----------------------------------+-----------------------------------+
如上所示,使用update修改其中某一條記錄的host欄位值為'%',或者新增一條記錄且host欄位值為‘%’。
2、防火牆原因
有些機器預設開了防火牆,也有可能導致外部機器不能訪問3306埠,以Ubuntu為例,可以通過iptables修改防火牆配置
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
編輯iptables,新增上面一條記錄。根據不同系統或版本差異,更詳細的修改方法可以上網搜尋查詢。
3、繫結地址有誤
如果上面兩種情況都不存在或不能解決,可以使用netstat命令檢視mysql服務繫結的ip,如果繫結的是127.0.0.1,則外部機器也不能訪問mysql。可以通過修改Mysql配置檔案解決。以Ubuntu系統為例,使用apt-get方式安裝的Mysql,配置檔案預設位置通常是/etc/mysql/mysql.conf.d/mysqld.cnf
使用sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf命令編輯該檔案
註釋掉以下一行即可:
bind-address = 127.0.0.1