You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至MySQL 8后Google表格脚本数据库连接失败排查求助

解决MySQL 8迁移后Google表格脚本连接失败的问题

我帮你分析下这个问题,MySQL 5到8的迁移确实会带来几个常见的连接兼容性问题,尤其是和Google Apps Script的JDBC结合时,以下是最可能的原因和解决方法:

  • MySQL 8默认认证插件不兼容
    MySQL 8.0开始默认使用caching_sha2_password认证插件,而Google Apps Script的JDBC驱动目前对这个插件的支持有限。你需要将你的数据库用户改回旧的mysql_native_password认证方式:

    1. 用其他能正常连接的工具登录MySQL服务器
    2. 执行以下SQL语句(替换你的用户名和主机,%表示允许从任意地址连接,如果你是固定IP就换成对应IP):
      ALTER USER 'MY_USER'@'%' IDENTIFIED WITH mysql_native_password BY 'MY_PW';
      FLUSH PRIVILEGES;
      

    执行完后再尝试运行脚本,这通常是解决这类问题的关键。

  • 连接字符串参数缺失或转义错误
    你当前的连接字符串里用了&,这是HTML的转义字符,但在Google Apps Script的字符串中,应该直接使用&来分隔参数。另外,MySQL 8可能需要额外的参数来允许公钥检索,建议修改连接字符串为:

    var conn = Jdbc.getConnection('jdbc:mysql://X.X.X.X:3306/DB_NAME?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false', 'MY_USER', 'MY_PW');
    

    这里添加了allowPublicKeyRetrieval=true(允许驱动获取服务器公钥)和useSSL=false(如果你的服务器没有配置SSL的话,避免SSL连接失败),同时修正了参数分隔符。

  • 时区配置问题
    MySQL 8默认的时区可能和MySQL 5不同,若脚本所在的时区与数据库时区不匹配,也可能导致连接失败。可以在连接字符串中指定时区参数,比如:

    var conn = Jdbc.getConnection('jdbc:mysql://X.X.X.X:3306/DB_NAME?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC', 'MY_USER', 'MY_PW');
    

    把UTC换成你实际使用的时区,比如Asia/Shanghai。

内容的提问来源于stack exchange,提问作者Carlo Camusso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:14:20