使用CentOS的过程中,安装了MySQL8,准备使用Navicat连接,发现无法成功!最后解决办法如下:
1、 确保连接的用户有权限,附上新增用户的sql:
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
grant all on *.* to 'root'@'%';
flush privileges;
2、 打开Navicat,创建访问MySQL的连接,出现如题报错的原因是:centos7的防火墙firewall在捣鬼!
关闭firewall查看是否起作用,命令如下:
systemctl stop firewalld.service //停止firewall
firewall-cmd --state //查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
systemctl disable firewalld.service //禁止firewall开机启动(最好设置一下,否则服务器重启又会限制连接)
惊喜的发现,可以正常连接;但是没有防火墙不安全,心里会忐忑。所以我们需要换个防火墙!
3、 使用iptables防火墙
1)配置iptables防火墙
service iptables status //先检查是否安装了iptables
yum install -y iptables //安装iptables
yum update iptables //升级iptables
yum install iptables-services //安装iptables-services
2)编辑iptables防火墙配置文件
vi /etc/sysconfig/iptables
修改后的配置文件如下:
# sampleconfiguration for iptables service
# you can edit thismanually or use system-config-firewall
# please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 –j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT--reject-with icmp-host-prohibited
-A FORWARD -jREJECT --reject-with icmp-host-prohibited
COMMIT
注意:红字部分就是需要添加的地方,简单说你想要的放开哪些端口,就写哪些端口。比如我使用Django项目配置MySQL数据库,默认的端口是3306,所以我添加了3306这个端口。
3)保存退出配置文件
4)配置iptables服务
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
systemctl status iptables.service #查看防火墙状态
systemctl stopiptables.service #关闭防火墙
4、 再次使用Navicat链接MySQL,成功!