【发布时间】:2017-06-13 17:43:46
【问题描述】:
我正在尝试通过 Google Apps 脚本中的 SSL 连接到数据库,引用这些 docs。错误是:
Execution failed: Failed to establish a database connection. Check connection string, username and password.
我可以从另一个数据库客户端 (Sequel Pro) 使用这些完全相同的参数,并且效果很好。我已经让数据库接受来自任何 IP 地址 (0.0.0.0/0) 的连接。
我相信我已经消除了所有其他变量(用户名、密码等),只有当我尝试在 Apps 脚本中使用 SSL 时它才会失败。
谁能提供一个在 Google Apps 脚本中使用 SSL 连接到 MySQL 数据库的工作示例?
我的应用脚本:
function connectDb() {
var address = 'x.x.x.x'; // no, I'm not literally using x's in my ip address
var instanceUrl = 'jdbc:mysql://' + address + ':3306/';
var clientSslKey = '-----BEGIN RSA PRIVATE KEY-----\n' +
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n' +
/* snip */
'-----END RSA PRIVATE KEY-----';
var clientSslCertificate = '-----BEGIN CERTIFICATE-----\n' +
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n' +
/* snip */
'-----END CERTIFICATE-----';
var serverSslCertificate = '-----BEGIN CERTIFICATE-----\n' +
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n' +
/* snip */
'-----END CERTIFICATE-----';
// https://developers.google.com/apps-script/reference/jdbc/jdbc#getconnectionurl-info
var connParams = {
user: 'temp',
// no password set
_serverSslCertificate: serverSslCertificate,
_clientSslCertificate: clientSslCertificate,
_clientSslKey: clientSslKey,
};
var conn = Jdbc.getConnection(instanceUrl, connParams);
}
编辑
我提交了一个错误here,它被标记为与this other one 重复,它是“P2”优先级。也许这意味着它很快就会修复?
【问题讨论】:
-
只包含url、用户名和密码(不包括sslkeys之类的高级参数)是否有效?
-
是的,这样就可以了。但很明显,连接没有使用 SSL。
-
您是否尝试过 UrlFetchApp 来查看 SSL 问题是否是您的证书/密钥? developers.google.com/apps-script/reference/url-fetch/…
-
你不需要在 jdbc url 中指定数据库名称吗?我一般做
jdbc:mysql://<server:port>/<my-db>?useSSL=[true|false] -
否,指定要使用的数据库对于所有连接都是可选的。
标签: ssl jdbc google-apps-script