1

我正在尝试将 AWS RDS 连接到 Google 表格,但我得到的只是

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

我已经尝试了在跟踪器中找到的方法,即“使用端点主机地址的 IP”,但仍然出现相同的错误,

我有:

  1. 设置 [RDS SETTINGS - public accessibilty- ON] 并验证端点和访问详细信息适用于所有其他查看器(Navicat、Adminer 等)

  2. 在“RDS VPC-安全组”入站和出站中将所有需要的谷歌 IP 添加到白名单(参考: https ://developers.google.com/apps-script/guides/jdbc)。

这是我正在使用的代码:

var connectionName = 'x.x.x.x:3306'
var user = 'admin';
var userPwd = 'pass';
var db = 'dbname';

var dbUrl = 'jdbc:mysql://' + connectionName + '/' + db;

function readFromTable11() {
  var conn = Jdbc.getConnection(dbUrl, user, userPwd); //error here
  Logger.log(conn);
  var start = new Date();
  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT * FROM items');
  var numCols = results.getMetaData().getColumnCount();

  while (results.next()) {
    var rowString = '';
    for (var col = 0; col < numCols; col++) {
      rowString += results.getString(col + 1) + '\t';
    }
    Logger.log(rowString);
  }

  results.close();
  stmt.close();

  var end = new Date();
  Logger.log('Time elapsed: %sms', end - start);
}

我已经搜遍了网络,但仍然无法正常工作。

4

3 回答 3

4

好的,事实证明 Google Scripts 仅支持 MySql v5.5.x 版本,因此超出此范围会导致问题成为“数据库连接失败”。因此,为了确保连接成功,只需在 RDS 中进行相同的设置,但选择 MySQL 引擎以获得版本 5.5.x 并使用它 - (toolbox.googleapps.com/apps/dig) 来查找您的端点 IP 地址以查找可能的 DNS 问题. 我会更新更多。

于 2019-11-26T06:02:51.747 回答
0

您可以使用下面的代码片段,不要忘记使用 useSSL=false

  var server = '111.111.111.111';
  var port = 3306;
  var dbName = 'dbName';
  var username = 'dbName';
  var password = 'password';
  var url = 'jdbc:mysql://'+server+':'+port+'/'+dbName+'?useSSL=false';
于 2021-05-11T20:29:03.963 回答
0

截至 2021 年 7 月,我能够使用标准 JDBC 连接将 RDS 和 AppScript 与 MySQL 5.7 连接(接受的答案提到了 v5.5.x 及更高版本的问题)。

唯一的技巧是在我的 RDS 入站安全组中添加/允许此列表 ( https://www.gstatic.com/ipranges/goog.txt ) 中的所有 IP,如 AppScript JDBC 文档中所述:

要使用此方法,您必须允许列出某些 CIDR IP 地址范围,以便 Apps 脚本的服务器可以连接到您的数据库。 https://developers.google.com/apps-script/guides/jdbc

PS:由于列表很长,我不得不打破并附加到 2 个安全组。

于 2021-07-23T18:03:01.600 回答