由于上一篇文章我就已经给MySQL新建了一新用户,且赋予了远程链接数据库的全部权限(GRANT ALL PRIVILEGES ON *.* TO 'newuser' @ '%' IDENTIFIED BY 'newpass' WITH GRANT OPTION;)html
且错误是 Cant't connect to MySQL.... 而不是1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server ,因此先排除权限问题,先从端口查起。mysql
shell > netstat -apn 查看全部端口信息,以下图能够看出mysqld服务Listen端口号为3306,固然也能够在MySQL中 mysql > show variables like 'port';sql
shell > netstat -apn | grep 3306 查询3306端口占用状况shell
在网上查到的解决方法最多的就是说,/etc/my.cn配置文件中配置了 bind_address=127.0.0.1数据库
但当我vim /etc/my.cnf打开配置文件时里面十分干净,没有其余多余设置,后面几条是我后来添加的。vim
因此也排除配置文件问题。centos
确实,我也感受是防火墙问题,感受愈来愈接近了。由于在本机上telnet 168.x.x.x 3306 提示链接失败。(telnet默认是没有的须要进行安装 #yum install telnet 安装源,#yum install telnet-server安装服务)服务器
CentOS7的默认防火墙为firewall,且默认是不打开的。tcp
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