异常错误信息
2013-在“握手:读取初始通信数据包”时丢失了与服务器的连接,系统错误:
可能存在的问题
MySQL服务器配置问题:
服务器防火墙端口是否打开:检查是否已打开3306端口或者3306是否已被占用
防火墙/SELinux:确保SSH服务器上的防火墙规则允许从SSH服务器到MySQL数据库的本地连接(通常是localhost:3306)。同时,如果使用SELinux,确保相关的安全策略没有阻止连接。
MySQL绑定地址:检查MySQL配置(my.cnf)中bind-address
是否设置为0.0.0.0
或127.0.0.1
,前者允许所有IP连接,后者只允许本地连接。如果SSH服务器和MySQL不在同一台机器上,确保配置允许外部连接。
服务器指令测试数据库连接
使用mysql -u root -p 输入密码进行登录
如不能登录,则说明数据库本身有问题
可以登录,在mysql检查是否允许root用户从任何远程地址连接
设置允许root用户从任何远程地址连接:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_root_password' WITH GRANT OPTION;
刷新配置:
FLUSH PRIVILEGES;
本地使cmd使用ssh进行连接检测
使用 ssh -L local_port:remote_host:remote_port user@ssh_server
其中,local_port
是你本地监听的端口,remote_host
是MySQL服务器的地址(如果SSH服务器和MySQL在同一台机器上,通常使用localhost或127.0.0.1),remote_port
是MySQL的端口(默认3306),user@ssh_server
是SSH服务器的登录信息。确保你正确设置了这些参数
检查 SSH 服务器的转发设置
因为使用的ssh隧道代理出现的问题,需要检查服务器是否允许转发
SSH服务器的配置文件通常位于/etc/ssh/sshd_config
。你可以使用文本编辑器(如vi
或nano
)打开此文件,并查找与端口转发相关的设置
-
允许本地端口转发:
查找AllowTcpForwarding
选项。如果设置为yes
,则表示允许本地端口转发。如果设置为no
,则表示禁止本地端口转发。 -
允许远程端口转发:
查找AllowRemoteTcpForwarding
选项。同样,如果设置为yes
,则表示允许远程端口转发;如果设置为no
,则表示禁止远程端口转发。 -
GatewayPorts:
这个选项用于控制远程端口转发是否允许绑定到非localhost地址。如果设置为yes
,远程端口转发可以绑定到任何地址;如果设置为no
或clientspecified
,则只允许绑定到localhost或客户端指定的地址。
在修改SSH服务器配置文件后,你需要重新启动SSH服务以使更改生效。这通常可以通过运行sudo systemctl restart sshd
命令来完成
总结:
本次部署遇到的问题,记录一下排查的思路和解决方案 最终发现未设置端口转发