“无法建立数据库连接。检查连接字符串、用户名和密码”背后的根错误是啥。

Posted

技术标签:

【中文标题】“无法建立数据库连接。检查连接字符串、用户名和密码”背后的根错误是啥。【英文标题】:What is the root error behind "Failed to establish a database connection. Check connection string, username and password."“无法建立数据库连接。检查连接字符串、用户名和密码”背后的根错误是什么。 【发布时间】:2012-11-11 13:45:45 【问题描述】:

通过google和***,我发现了一些关于“无法建立数据库连接。检查连接字符串、用户名和密码”的问题。但是,我找不到任何人发现了根本错误。

我正在尝试使用数据库连接编写我的第一个谷歌脚本;我有一个 mysql 和 oracle jdbc getConnection,它们都产生了这个错误。我已经检查,双重和三重检查连接信息无济于事。我知道数据库是可以访问的(可以通过其他客户端从几台不同的机器上进入,比如 linux 机器上的 php,家里和工作中各种 Windows PC 上的 sql developer)。我如何确定真正的错误是什么?呈现给我的错误太笼统和抽象了。

环境: 在 Google 电子表格中使用脚本(从而继承 google 建立的任何环境)。我正在尝试使用 Google API jdbc,但对环境变量一无所知。

使用以下语法:

var url = "jdbc:mysql://mysql.cb-pta.com:3306/u4lottery";
var conn = Jdbc.getConnection(url, user, password); 

再次验证用户名和密码。

【问题讨论】:

错误的连接字符串、错误的用户名或错误的密码。很难确定,当我们不知道您使用的是什么连接字符串时。 我猜你的用户名和密码是正确的——所以可能是连接字符串。也许检查你的环境变量 (可以从几台不同的机器通过其他客户端进入)还有什么其他客户端?它们是如何配置连接的? 这些建议都没有告诉我如何找到根本错误。对于缺少上下文信息,我深表歉意;我原以为大部分内容都是通过我的谷歌脚本链接填写的。我看到它不是,所以我将编辑原件。 有一个已知的错误会导致使用主机名的 jdbc 连接出现问题。尝试改用 IP 地址。 【参考方案1】:

有一个已知错误会导致使用主机名的 jdbc 连接出现问题。请尝试使用 IP 地址。

很奇怪,但确实如此。我被这个 bug 浪费了将近 2 天的时间......

Here is the link to the bug report....

【讨论】:

谢谢。这回答了我的一个问题,但我有点怀疑我永远不会知道如何在 google-scripts 的封面下查看这个通用错误所涵盖的内容。 嗨,我使用了IP地址,然后它也一次又一次地导致同样的错误 @sacrophyte 你能告诉我你是怎么得到那个IP地址的吗?我在 Google Cloud SQL 中创建了一个数据库 在调试 1 天后解决了我的问题 :D 非常感谢【参考方案2】:

只是为了其他人找到这个旧线程。我在使用 Apps 脚本连接到 Google CloudSQL 实例时也遇到了问题,不得不从以下位置进行更改:

Jdbc.getCloudSqlConnection('jdbc:google:rdbms://<IP>/<DB_NAME>', '<USER>', 'PASSWORD');

到标准 JDBC MySQL(有效):

Jdbc.getConnection('jdbc:mysql:// ...same as above...

另外,请注意不要在 DB_NAME 后面包含“/” - 这也会导致用户/密码错误消息失败!

要检查的另一件事是您是否有适当的防火墙设置 - 允许从您来自 的源 IP 进行访问(如果是 Apps 脚本,这可能是 Google 的服务器 - 而不是您的客户端浏览器的 IP) 。您可能必须向所有人开放它(0.0.0.0/0)

【讨论】:

如果我使用“jdbc:mysql”,我会得到“连接 URL 使用了不受支持的 JDBC 协议。”【参考方案3】:

这可能与您的数据库位于防火墙后面有关。根据Google documentation(在这种情况下,Google Data Studio,但通常适用):“如果您的数据库位于防火墙后面,您将需要开放对以下所有 IP 地址的访问。Data Studio 使用这些地址连接并查询您的 MySql 数据库。”

此处的 IP 地址以及其他地方:https://support.google.com/datastudio/answer/7088031

【讨论】:

以上是关于“无法建立数据库连接。检查连接字符串、用户名和密码”背后的根错误是啥。的主要内容,如果未能解决你的问题,请参考以下文章