1. 程式人生 > >遠端連線centos7 上的mysql報(ERROR 2003 (HY000): Can't connect to MySQL server on '168.x.x.x' (10060) )

遠端連線centos7 上的mysql報(ERROR 2003 (HY000): Can't connect to MySQL server on '168.x.x.x' (10060) )

  1.MySQL埠

  因為上一篇文章我就已經給MySQL新建了一新使用者,且賦予了遠端連線資料庫的所有許可權(GRANT ALL PRIVILEGES ON *.* TO 'newuser' @ '%' IDENTIFIED BY 'newpass' WITH GRANT OPTION;)

  且錯誤是 Cant't connect to MySQL.... 而不是1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server ,所以先排除許可權問題,先從埠查起。

  shell > netstat -apn 檢視所有埠資訊,如下圖可以看出mysqld服務Listen埠號為3306,當然也可以在MySQL中 mysql > show variables like 'port';

    

  shell > netstat -apn | grep 3306 查詢3306端口占用情況

  

  在網上查到的解決方法最多的就是說,/etc/my.cn配置檔案中配置了 bind_address=127.0.0.1

  但當我vim /etc/my.cnf開啟配置檔案時裡面十分乾淨,沒有其他多餘設定,後面幾條是我後來新增的。

  

  所以也排除配置檔案問題。

  2.防火牆

  確實,我也感覺是防火牆問題,感覺越來越接近了。因為在本機上telnet 168.x.x.x 3306 提示連線失敗。(telnet預設是沒有的需要進行安裝 #yum install telnet 安裝源,#yum install telnet-server安裝服務)

  CentOS7的預設防火牆為firewall,且預設是不開啟的。

  shell > systemctl start firewalld 啟動friewall

  shell > systemctl status firewalld 檢視firewall啟動情況

  shell > firewall-cmd --zone=public --add-port=3306/tcp --permanent 開啟3306埠

  然後重啟 firewalld  #firewall-cmd --reload

  使用 # firewall-cmd --query-port=3306/tcp 檢查3306埠是否已經開啟,如果顯示yes,則表示防火牆已開啟該埠。

  (當然也可以關閉centos7的預設防火牆 #systemctl stop firewalld 和禁用#systemctl mask firewalld。然後使用iptables防火牆,centos7預設是沒有安裝iptables的,同樣#yum install iptables #yum install iptables-services兩步進行安裝即可。這有一博友的詳細iptables安裝配置和講解,我這就直接借用了。https://www.cnblogs.com/anne32184/p/5961806.html)

  然後回到window 再進行MySQL遠端連線時(mysql -h 168.x.x.x -u root -p),報同樣的錯誤,這讓我很是無語,然後又試了各種方法,逛各種部落格網站,連mysql版本不同,埠為tcp6等不著邊的都去想了,但還是無解。(v _ v)

  


  後來呀,偶然間想到阿里雲,阿里雲是不是也有埠配置? 然後網上一查,可不其然,特別是雲伺服器,就算在伺服器的防火牆啟動了埠但在雲控制檯的例項埠沒設定也是無法訪問的,在此我就直接分享百度經驗裡的了

  https://jingyan.baidu.com/article/03b2f78c31bdea5ea237ae88.html

  當然,看到這個介面我就安心了。

  

 

轉載自:https://www.cnblogs.com/lightsrs/p/7842299.html