从Google Apps Script连接到本地MySQL数据库

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

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

代码始终在此行失败:

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 Script快得多。


Google-apps-script 运行在 Google 的云端,因此它无法连接到您的本地主机,也无法连接到私有网络范围,如 10.x.x.x。我不确定是否可能进行本地连接(因此是评论而非答案),但如果可能的话,它将需要一些形式的虚拟网络连接 Google 的数据中心和您的本地网络。 - Mark Rotteveel
这可能会对你有所帮助。https://dev59.com/b3bZa4cB1Zd3GeqPFmoF - bop-a-nator
Mark Rotteveel。Google的指南让人觉得你可以使用JDBC连接任何数据库,从而实现本地连接。https://developers.google.com/apps-script/guides/jdbc。我也看到有人在网上发布说他们成功地做到了这一点。 - Steve Gon
谢谢bop-a-nator,但是我在授予权限时遇到了错误。错误代码:1410。您不被允许创建一个带有GRANT权限的用户。 - Steve Gon
2个回答

3

虽然你的问题很老了,但我认为我的回答仍可帮助那些通过谷歌搜索寻找解决方案的人。像其他人一样,我添加了白名单IP(https://www.gstatic.com/ipranges/goog.txt),确保我使用的是MySQL 5.7以及所有其他的解决方案。答案似乎是不使用Google在其JDBC文档中提供的语法。我将所有单引号替换为双引号,现在可以通过Google Sheets Script Editor连接到我的Web服务器的MySQL数据库了。以下是我的连接语法:

// 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


1

编辑:

考虑到jnovack的评论,我修改了这条消息以使其更加明确。

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

如果您想将MySQL暴露给Internet,则需要公共IP地址。否则,您的服务器将无法从Internet访问。

有关先前信息(和其他步骤),请参见: https://linuxhint.com/expose_mysql_server_internet/

第二种方法

另一种公开MySQL服务的方法是使用外部服务,以便将本地主机公开到Web,例如ngrok。

在此存储库中,您将找到必要的代码来完成此操作: https://github.com/jenizar/googlesheet-to-mysqldb-local-pc


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接