VB.NET连接Hostinger远程MySQL报握手数据包格式异常如何解决?
故障排查方案
你遇到的The handshake failed due to an unexpected packet format错误触发于MySQL连接握手阶段,由于相同配置可正常连接其他服务商的MySQL服务,可排除本地代码、驱动基础能力问题,故障完全集中在Hostinger侧的策略/配置变更,可按以下优先级逐一验证:
- 优先验证TLS版本兼容问题:近两年多数云服务商默认禁用了低版本TLS协议(TLS1.0/1.1),如果你使用的
MySql.DataNuGet包版本低于8.0.23,默认不支持TLS1.2及以上版本,会触发握手失败。解决方案分两种:一是升级MySql.Data包到最新稳定版;二是在连接字符串中显式指定SSL配置,若Hostinger允许非SSL连接加SslMode=None,若要求SSL连接加SslMode=Required;TlsVersion=Tls12。
修改后的连接字符串参考:Dim conn As String = "Server=myserver-here;Port=3306;Database=u8424_test;Uid=u8424_teste;Pwd=Test2021;SslMode=Required;TlsVersion=Tls12" - 验证远程MySQL端口正确性:Hostinger默认会给远程MySQL连接分配非3306的对外端口避免端口扫描,仅内网访问用3306。你可在本地命令行执行
telnet 你的Hostinger数据库地址 3306,如果返回内容不是MySQL版本号开头的字符串,说明端口被劫持/未开放,需登录Hostinger后台确认远程连接的实际端口。 - 验证IP白名单配置:若Hostinger侧配置了数据库访问IP白名单,你本地的公网出口IP变更后未加入白名单时,部分拦截策略会返回非MySQL标准握手包,也会触发该错误,需登录Hostinger后台确认你的当前公网IP已在允许访问列表内。
- 验证密码认证插件兼容性:如果Hostinger近期将MySQL默认密码认证插件从
mysql_native_password切换为caching_sha2_password,低版本的MySql.Data驱动不支持该插件也会握手失败,可联系Hostinger将你的数据库用户的认证插件改回mysql_native_password,或升级驱动到最新版本。
内容的提问来源于stack exchange,提问作者Sandman
相关产品推荐
相关产品推荐

