本地远程连接mysql 报错“ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘39.99.39.25:3306‘ (60)”

前言:

在基于Alibaba Cloud Linux 3/CentOS 操作系统通过 rpm、yum安装mysql8.0

sudo yum install mysql-community-server

根据指引配置账户密码后 

sudo mysql_secure_installation

服务器本机已经可以 mysql -uroot -p 连接mysql(代表mysql服务正在运行)

然后本地尝试ssh远程连接mysql 遇到报错“ERROR 2003 (HY000): Can't connect to MySQL server on '39.99.39.25:3306' (60)” ,该报错提示我无法连接到mysql服务器;

 排查思路:

1.检查mysql服务是否正在运行

如返回running 代表正常,fail失败可尝试systemctl start mysqld.service,如无法启动成功可查看mysql log :/var/log/mysql/ 下

systemctl status mysqld.service

2.检查当前ssh用户是否允许远程连接 

输出中寻找ssh的用户是否有% 这代表拥有表操作权限和远程连接权限; 如果不存在 运行3

 SHOW GRANTS FOR 'root'@'%';

3.mysql8.0 确认ssh账号是否存在并创建、授权远程连接

CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'your password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

4.确认3306端口是否在运行监听

在输出中查看是否有 3306端口

netstat -tuln | grep 3306


 5.确认3306的端口是否被防火墙允许放行

如果返回yes 代表3306端口被放行,no代表不允许(注:博主本机的是yes)

firewall-cmd --query-port=3306/tcp

6.防火墙允许3306端口放行

firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload

7.查看mysql log 

tail -f /var/log/mysqld.log (博主mysql8.0的log在这里)查阅log后也是没有任何问题,服务准备就绪,允许远程连接。

总结:

经过以上步骤全部排查后,本地还是无法远程连接mysql,包括服务器本地也无法远程mysql

“ERROR 2003 (HY000): Can't connect to MySQL server on '39.99.39.25:3306' (110)” -- 服务器
“ERROR 2003 (HY000): Can't connect to MySQL server on '39.99.39.25:3306' (60)” --本地

想到了内网/公网ip的事情,验证应用服务器内网IP是否可以telnet通3306 发现可以,那么!问题显而易见是因为阿里云控制台服务器防火墙配置,没有允许某些端口在当前公网/内网上对外使用;

在阿里云控制台添加防火墙模版》应用到实例后再次尝试telnet和远程连接发现可以,问题结束;

注:涉及到云服务器,开通端口都需要上服务器控制台设置,命令行内的并不会生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值