mysql在centOS7主機上可以正常運行了,當然在linux的環境下也完全可以對mysql進行所有的數據操作,你知道的,對於本人這菜鳥來說,如果能在window的MySQL客服端上進行操作的話,將會更加容易管理和數據庫的操作。
但往往很多事都不能一帆成功的,然后試了各種方法。在此分享一些經驗和學習記錄。
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
當然,看到這個界面我就安心了。