【问题标题】:Connect to local MySQL database from Google Apps Script从 Google Apps 脚本连接到本地 MySQL 数据库
【发布时间】:2018-11-02 22:40:35
【问题描述】:

我正在尝试将 Google Apps 脚本连接到 MacOS 上的本地 MySQL (8.0.11) 数据库。我已经设置了数据库,my.cnf 文件,安装了 MySQL Workbench。我创建了一个新数据库,可以插入行和查询。但是,当我尝试在 Apps 脚本中连接时,我不断收到错误消息:

无法建立数据库连接。检查连接字符串、用户名和密码。

这行代码一直失败:

var conn = Jdbc.getConnection('jdbc:mysql://localhost:3306/mydb', 'root', 'pass');

我尝试了连接字符串的变体,例如:

var conn = Jdbc.getConnection('jdbc:mysql://10.10.10.10:3306/mydb', 'root', 'pass');

我已确认使用了 3306 端口。我未能成功将 Google 的 IP 地址列入白名单,并且一直收到以下语法错误:

GRANT ALL PRIVILEGES ON *.* TO 'root@64.%.%.%';

得到错误:

错误代码:1410。您不能使用 GRANT 创建用户

我错过了什么?

编辑:放弃并成功使用 Python 和一些手动步骤。运行速度比 Google Apps 脚本快得多。

【问题讨论】:

  • Google-apps-script 在 Google 的云上运行,因此它无法连接到您的本地主机,也无法连接到像 10.x.x.x 这样的私有网络范围。我不确定是否甚至可以在本地连接(因此发表评论,而不是回答),但如果可能的话,它需要在谷歌的数据中心和您的本地网络之间建立某种形式的虚拟网络。
  • 这可能会对您有所帮助。 stackoverflow.com/questions/18592903/…
  • 马克·罗特维尔。 Google 的说明听起来好像您可以使用 JDBC 连接到任何数据库,这将启用本地连接 developers.google.com/apps-script/guides/jdbc。我也看到有人在网上发帖说他们已经成功了。
  • 感谢 bop-a-nator,但授予授权选项时出现错误。错误代码:1410。您不能使用 GRANT 创建用户

标签: mysql jdbc google-apps-script


【解决方案1】:

虽然您的问题很老,但我认为我的这个答案将帮助任何仍在谷歌搜索解决方案的人。像其他人一样,我添加了白名单 IP (https://www.gstatic.com/ipranges/goog.txt),确保我使用的是 MySQL 5.7,以及所有其他解决方案。答案似乎不是使用他们在 JDBC 文档中提供的 Google 语法。我将所有单引号换成双引号,我终于可以通过 Google Sheets Script Editor 连接到我的网络服务器的 MySQL DB。这是我的连接语法:

// Replace the variables in this block with real values.
var server = "123.456.789.0"
var port = "3306"
var db = "db_name"
var user = "user_name"
var pwd = "password"
var url = "jdbc:mysql://" + server+":"+port+"/"+db;

/**
 * Write one row of data to a table.
 */
function writeOneRecord() {
  var conn = Jdbc.getConnection(url, user, pwd);
  Logger.log(conn);

  var stmt = conn.prepareStatement('INSERT INTO test' + ' (test) values (?)');
  stmt.setString(1, 'test');
  stmt.execute();
  conn.close();

完全披露,我按照这个视频来解决这个问题:https://www.youtube.com/watch?v=npq2zRrPtP8

【讨论】:

    【解决方案2】:

    编辑: 参加 jnovack 的评论后,我编辑了这条消息,使其更加明确。

    默认情况下,MySQL 数据库服务器仅在 IP 127.0.0.1 或主机名 localhost 上运行。因此,无法从 Internet 上的其他计算机访问它。为了使 MySQL 可以从其他计算机或 Internet 访问,您必须进行一些配置。

    如果您想将 MySQL 公开到 Internet,那么您将需要一个公共 IP 地址。否则,您的服务器将无法从 Internet 访问。

    可以在以下位置找到之前的信息(和其他步骤): https://linuxhint.com/expose_mysql_server_internet/

    第二种方法

    另一种公开 MySQL 服务的方法是使用外部服务,这样您就可以将 localhost 公开给 Web,例如 ngrok。

    在此 repo 中,您将找到实现此功能所需的代码: https://github.com/jenizar/googlesheet-to-mysqldb-local-pc

    【讨论】:

      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多