如何在Excel VBA中配置通过UNIX socket连接远程MySQL的连接字符串
你配置的核心错误有3个:
- 逻辑错误:UNIX socket 是类Unix系统的本地进程通信机制,仅支持同一台主机内部的程序访问MySQL,你在Windows环境运行Excel VBA属于跨网络远程访问,根本无法使用UNIX socket连接远程主机的MySQL,所有带
Protocol=unix、Socket参数的配置从底层逻辑上就不成立。 - 权限配置错误:你在PhpMyAdmin看到的数据库用户是
[***MyUserName***]@localhost,默认仅允许从虚拟主机本地登录,远程访问首先需要完成cPanel侧的权限配置。 - 参数适配错误:MySQL ODBC 5.1驱动对MySQL 5.7的兼容性不足,且你用的Unix socket参数仅适用于Linux环境下的ODBC调用,Windows环境下无法识别。
正确解决步骤:
- 放弃UNIX socket连接方案,采用TCP/IP远程连接:
首先登录cPanel,进入「远程MySQL」功能,添加你运行Excel的设备的公网IP(如果是动态公网IP,可临时添加当前IP,共享主机一般不支持全IP放行)。 - (可选)升级ODBC驱动:
卸载原有MySQL ODBC 5.1驱动,安装和你的Excel位数(32/64位)匹配的MySQL ODBC 5.3/8.0版本驱动,避免兼容性问题。 - 使用标准TCP/IP连接字符串:
MySQLConnection.ConnectionString = _ "Driver={MySQL ODBC 5.3 Unicode Driver};Server=[cPanel给出的远程MySQL域名/IP];Port=[MySQL端口,默认3306,部分共享主机会修改端口];Database=[数据库名];User=[数据库用户名];Password=[密码];Option=3;"
如果共享主机不允许开放远程MySQL权限,你可以通过SSH隧道将远程主机的3306端口映射到本地127.0.0.1的3306端口,此时连接字符串Server参数直接填127.0.0.1即可。
报错原因说明:
你收到的Lost connection to MySQL server at 'reading initial communication packet', system error: 0报错,本质是驱动无法和目标MySQL端口建立有效连接,要么是IP被防火墙拦截,要么是你用的socket连接逻辑错误导致驱动无法找到有效通信路径。
内容的提问来源于stack exchange,提问作者Thinkster
相关产品推荐
相关产品推荐

