我正在尝试通过Apps Script和JDBC连接到本地MySQL服务器,但我一直收到两种错误之一。此代码:
function connectTest() {
var conn = Jdbc.getConnection("jdbc:mysql://localhost", "root", "xxx");
}
出现错误:无法建立数据库连接。请检查连接字符串、用户名和密码。
这段代码:
function connectTest() {
var conn = Jdbc.getConnection("jdbc:mysql://localhost:3306", "xxx", "pass");
}
出现了错误:无效参数:url
。
我已经尝试了数十种组合,但无法使其正常工作。尝试使用应用程序脚本登录时,在MySQL的访问日志中没有显示(即如果我在本地尝试使用错误信息登录,则会看到[Note] Access denied for user 'host'@'localhost' (using password: YES)
)。我已将适当的访问权限授予root:
mysql> show grants for 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
我需要做些什么才能将本地数据库暴露到互联网/Google Apps Script?编辑:我现在可以从MySQL日志中获得访问被拒绝的提示(例如“Access denied for user 'root'@'12.123.12.123' (using password: YES)”),但应用程序仍然无法连接。我尝试使用我的公共IP添加“bind-address”,但MySQL无法启动,我收到错误消息(“[ERROR] Can't start server: Bind on TCP/IP port: Can't assign requested address”)。
function connectTest() {
var conn = Jdbc.getConnection("jdbc:mysql://12.123.12.123:3306", "root", "xxx");
}
编辑2:我更改了bind-address=0.0.0.0,这样可以在DB日志中看到被拒绝的访问错误,但仍然无法连接。我已成功连接到互联网上的其他开放MySQL数据库(例如ensembl.db.ensembl.org:3306),但仍然无法连接到我的本地数据库。
'root'@'%'
应该允许所有IP地址,不是吗? - howMuchCheeseIsTooMuchCheese'%'
加入白名单,只需加入来自谷歌服务器的地址(请关注@Mr.Rebot的链接)。这可能需要更多的工作,但是您会更安全! - mTorres74.125....
是什么? - Rick James