【已解决Operation timed out 问题

2023年 10月 8日 40.5k 0

概述

今天遇到了这样一个有点奇葩的问题,再阿里云服务器上部署了Mysql服务,再使用NaviCat的过程中链接不上,connect to address IP地址: Operation timed out,最后是服务器防火墙的问题。

查看Mysql服务/端口

1.查看Mysql是否启动,ps aux | grep mysql 网络监听是否正常,netstat -tunlp 查看3306端口网络监听是否正常,都正常。

图1.png

在这里补充一句,不是tcp/tcp6协议的原因,tcp6是向下兼容tcp协议的,:::33060.0.0.0:80没有关系,出现在列表里就可以表示端口已经启动监听服务了。

查看阿里云安全组

2.查看服务器的安全组配置是否正确,3306的端口也存在,为了打消疑虑,出方向和入方向都把3306添加到了安全组里,尝试后还是不通。

$ telnet ip地址 3306
Trying ip地址...
telnet: connect to address ip地址: Operation timed out
telnet: Unable to connect to remote host

Mysql的远程权限

3.开启Mysql的远程权限,username是你自己的用户名,host修改成%表示任何ip都可以访问,这个ip后期要限制一下。

update mysql.user set Host='%' where User='username';

也可以设置设置username用户密码

update user set plugin='mysql_native_password',authentication_string=password('123456') where user='username';

执行完,要刷新权限,刷新权限的作用是同步正在连接中的mysql进程,如果想加强Mysql的权限管理也可以在phpmyadmin中【账户-root-Change password】随机生成,这样的密码更安全,刷新权限flush privileges;

防火墙

如果以上都尝试过,还不能解决问题,那只能是属于防火墙的问题了,systemctl status firewalld查看防火墙,防火墙没有开启,具体步骤如下:

1、输入以下看mysql是否监听了3306: netstat -tulpen

2、执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示FirewallD is not running。

3、通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。

4、通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。

5、再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。

6、如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。(这一步不需要,谢谢。)

7、再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功。

8、执行命令:firewall-cmd --zone=public --permanent --add-service=mysql

9、返回success。然后继续执行以下进行防火墙重启:systemctl restart firewalld

总结

但我遇到的一个问题非常诡异,当我重新打开防火墙的时候,NaviCat客户端可以正常连接,但是浏览器不能正常访问了,(我猜测开启防火墙需要把80端口也加入到防火墙)后来我又关闭了防火墙,使用安全组策略来管理端口,剩下的留着后续有时间再进行优化。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论