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

从Google Apps脚本连接到本地MySQL数据库,mysql,jdbc,google-apps-script,Mysql,Jdbc,Google Apps Script,我正在尝试将Google应用程序脚本连接到MacOS上的本地MySQL(8.0.11)数据库。我已经安装了DB,my.cnf文件,安装了MySQL工作台。我已经创建了一个新的数据库,可以插入行和查询。但是,当我尝试在应用程序脚本中连接时,我不断收到错误: 未能建立数据库连接。检查连接字符串、用户名和密码 在这一行代码中始终失败: var conn = Jdbc.getConnection('jdbc:mysql://localhost:3306/mydb', 'root', 'pass');

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

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

在这一行代码中始终失败:

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端口。我没有成功地将谷歌的IP地址列入白名单,并且始终出现以下语法错误:

GRANT ALL PRIVILEGES ON *.* TO 'root@64.%.%.%';
获取错误:

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

我错过了什么

编辑:放弃了,成功地使用了Python和一些手动步骤。工作速度比谷歌应用程序脚本快得多。

编辑: 根据jnovack的评论,我对这条消息进行了编辑,使其更加明确

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

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

先前的信息(和其他步骤)可在以下位置找到:

第二种方法

另一种公开MySQL服务的方法是使用外部服务,这样您就可以向web公开本地主机,比如ngrok

在本回购协议中,您将发现实现此目的所需的代码:

虽然你的问题已经很老了,但我认为我的这个答案将帮助那些还在谷歌上搜索解决方案的人。和其他人一样,我添加了白名单IPs(),确保我使用的是MySQL 5.7和所有其他解决方案。答案似乎不是使用谷歌在JDBC文档中提供的语法。我把所有的单引号都换成了双引号,最终我可以通过GoogleSheets脚本编辑器连接到我的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();

完全公开,我通过这段视频了解到了这一点:

Google应用程序脚本运行在Google的云上,因此它无法连接到您的本地主机,也无法连接到像10.x.x.x这样的专用网络范围。我不确定是否可以在本地连接(因此是评论,而不是回答),但如果可能的话,需要在谷歌的数据中心和您的本地网络之间建立某种形式的虚拟网络。这可能会对您有所帮助。马克·罗特维尔。谷歌的指令让人觉得你可以使用JDBC连接到任何数据库,这将启用本地连接。我还看到有人在网上发布他们成功地完成了这项工作。谢谢bop-a-nator,但我在授予授予选项时出错。错误代码:1410。您不允许使用Grant创建用户虽然此代码可以回答问题,但最好在不介绍其他人的情况下解释它如何解决问题以及为什么使用它。