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
当然,看到这个界面我就安心了。