虽然这次错误是因为不了解导致的,但是排查思路可以复制,以后遇到相似的问题,可以逐步排除,因此进行记录。
- 现象使用命令:
mysql -h your_ip -P3306 -u root -pyour_password
出现提示: Lost connection to MySQL server at 'reading initial communication packet', system error: 3。
根据网上搜索结果: 使用
nc -zv <服务器IP地址> 3306
检查网络问题或防火墙设置问题。发现是通的。
然后检查了
sudo nano /etc/my.cnf 并且添加了
[mysqld]
bind-address = 0.0.0.0
sudo systemctl restart mysqld
并且给root 用户添加了权限:
SELECT Host, User FROM mysql.user WHERE User='root';
-- 确保存在 'root'@'%',否则执行以下命令
CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
确认了服务器的防火墙:
sudo ufw allow 3306
sudo ufw enable
仍然没有效果,再次查询,发现又可能是VPN的原因(其实不是)
关闭VPN后,错误改变:
Can't connect to MySQL server on '--:3306' (60)
确认防火墙,发现云服务的防火墙居然有两个,一个是服务器内部的,可以通过自己的命令控制,京东控制台还有一个防火墙,需要访问时,那个防火墙也必须进行配置
其他需要注意的问题是:
- 端口号是否被修改