1.MySQL埠 因為上一篇文章我就已經給MySQL新建了一新用戶,且賦予了遠程連接資料庫的所有許可權(GRANT ALL PRIVILEGES ON *.* TO 'newuser' @ '%' IDENTIFIED BY 'newpass' WITH GRANT OPTION;) 且錯誤是 Ca ...
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