(注:引用至 https://www.2cto.com/database/201504/391816.html)html
先看是否能ping通遠程服務器,ping 192.168.1.211,若是不能夠就是網絡問題。而後,檢查端口是否被防火牆擋住了,telnet 192.168.1.211 3306,若是鏈接失敗,配置防火牆。java
配置防火牆,開啓3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(容許3306端口經過防火牆)
/etc/init.d/iptables restart(重啓防火牆使配置生效)mysql
若是開啓了防火牆,telnet仍是失敗,經過netstat查看3306的端口狀態:
netstat -apn|grep 3360
tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqldsql
注意紅色的地方,這說明3306被綁定到了本地。檢查一下my.cnf的配置,這裏能夠配置綁定ip地址。
bind-address=addr
不配置或者IP配置爲0.0.0.0,表示監聽全部客戶端鏈接。服務器
ps:我開啓3306端口,而且檢查MySQL配置以後,telent仍然失敗,可是在本機telnet是ok的,再三確認了配置沒有問題。後來跟咱們的ucloud帳號管理員提了一下,才知道ucloud管理後臺也須要開啓3306端口,用雲服務器的留意這個。網絡
MySQL建用戶的時候會指定一個host,默認是127.0.0.1/localhost,那麼這個用戶就只能本機訪問, 其它機器用這個用戶賬號訪問會提示沒有權限,host改成%,表示容許全部機器訪問。
tcp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#mysql -u root -p
mysql> use mysql;
Database changed
mysql> update user set host=’%’ where user=’root’;
Query OK,
0
rows affected (
0.00
sec)
Rows matched:
1
Changed:
0
Warnings:
0
mysql> select host,user from user;
+———–+———+
| host | user |
+———–+———+
|
127.0
.
0.1
| root |
| % | night |
+———–+———+
2
rows in set (
0.00
sec)
|
最後,別忘了重啓mysql使配置生效。spa
備註:
mysql -u root -p
use mysql;rest
將相應用戶數據表中的host字段改爲'%';code
update user set host='%' where user='root';
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 不予理會
flush privileges;
# /etc/init.d/mysql restart