使用VSCode SQL Tools连接Debian VM数据库时出现握手超时错误
连接Debian虚拟机上的MySQL数据库超时问题
我正在使用VSCode的SQL Tools扩展连接部署在Debian虚拟机上的数据库,但每次尝试连接都会出现超时错误。
连接日志
[1664037417336] INFO (ext): EXECUTING COMMAND => sqltools.getConnections [1664037417336] INFO (ls): REQUEST RECEIVED => connection/GetConnectionsRequest [1664037417337] INFO (ext): EXECUTING COMMAND => sqltools.getConnections [1664037417337] INFO (ls): REQUEST RECEIVED => connection/GetConnectionsRequest [1664037417338] INFO (ls): REQUEST RECEIVED => connection/GetConnectionPasswordRequest [1664037422395] INFO (ls): REQUEST RECEIVED => connection/ConnectRequest [1664037422395] INFO (ls): Connection instance created for Social Bot (dev). ns: "conn-manager" [1664037432398] ERROR (ls): {"code":-1,"data":{"driver":"MySQL","driverOptions":{"mysqlOptions":{"authProtocol":"default"}}},,"name":"Error"} ns: "conn" [1664037432399] ERROR (ls): Connecting error: {"code":-1,"data":{"driver":"MySQL","driverOptions":{"mysqlOptions":{"authProtocol":"default"}}},,"name":"Error"} ns: "conn-manager" [1664037432399] ERROR (ls): Open connection error ns: "conn-manager" [1664037432401] ERROR (ext): ERROR: Error opening connection Handshake inactivity timeout, {"code":-1,"data":{"driver":"MySQL","driverOptions":{"mysqlOptions":{"authProtocol":"default"}}}} ns: "error-handler"
连接配置截图

请问出现该问题的原因是什么?
问题原因及排查方案
- 防火墙/安全组拦截:Debian虚拟机的防火墙(如ufw)可能未开放MySQL默认端口3306,或者虚拟机所在的云平台安全组限制了外部访问。可以在虚拟机中执行
ufw status查看端口开放状态,若未开放,执行ufw allow 3306开放端口;如果是云服务器,还需要在安全组中添加允许3306端口入站的规则。 - MySQL绑定地址限制:MySQL默认仅允许本地(127.0.0.1)访问,需要修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address的值改为0.0.0.0(允许所有IP访问),修改后执行systemctl restart mysql重启服务。 - 数据库用户权限不足:当前使用的数据库用户可能没有授权从外部IP地址访问。登录MySQL后执行授权语句:
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password';,然后执行FLUSH PRIVILEGES;刷新权限。 - 握手超时参数问题:SQL Tools扩展的超时时间设置过短,或者MySQL的
wait_timeout、interactive_timeout参数值太小。可以尝试在VSCode的SQL Tools连接配置中增加超时时间,或者调整MySQL的相关参数。
内容的提问来源于stack exchange,提问作者Markix
相关产品推荐
相关产品推荐

