gpt4 book ai didi

java - 使用简单的 Java 程序 (JDBC) 连接到 Google SQL

转载 作者:行者123 更新时间:2023-11-30 07:57:53 26 4
gpt4 key购买 nike

我有一个简单的 Java 程序(不是网络应用程序/谷歌引擎/等等)。我查看了 Google Cloud SQL 网站上的所有指南,但我不知道如何连接到服务器。

现在我有

Class.forName("com.mysql.jdbc.Driver");

connection = DriverManager.getConnection("jdbc:mysql://x:3306/y?user=root"); 

其中 x 是实例的 IP 地址(取自实例的属性),y 只是实例 ID。

我做错了什么吗?我还按照其中一个教程的建议为 root 设置了密码。我应该在代码中的某处指定它吗?

谢谢。

编辑

通过 mohan rathour 的链接,我获得了 Cloud SQL MySQL Socket Factory我的代码现在看起来像:

Class.forName("com.mysql.jdbc.Driver");

String jdbcUrl = String.format("jdbc:mysql://google/%s?cloudSqlInstance=%s&"+"socketFactory=com.google.cloud.sql.mysql.SocketFactory",
"dbname",
"instanceConnectionName");

connection = DriverManager.getConnection(jdbcUrl, "userName", "password");

我在我的控制台中得到以下信息:

INFO: Connecting to Cloud SQL instance [instanceName].
com.google.cloud.sql.mysql.SslSocketFactory getInstance
INFO: First Cloud SQL connection, generating RSA key pair.

但是我得到了这个异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

解决方案

无需使用“Cloud SQL MySQL Socket Factory”。

在 Google SQL 面板中,转到您的实例面板 -> 访问控制 -> 授权,添加以下网络地址并单击保存。

0.0.0.0/0

现在您可以使用此代码进行连接:

Class.forName("com.mysql.jdbc.Driver");
...
String url= String.format("jdbc:mysql://x:3306/y");
connection = DriverManager.getConnection(url, z, w);

其中x是你的实例IP(从面板获取),y是实例名称,z是数据库(不是账户)用户名(通常是“root”),w是用户密码(你必须设置它。看看谷歌的教程)。

最佳答案

默认情况下,Cloud SQL 实例不允许在公共(public) IP 上进行连接。您必须添加要连接的各个子网。您可以在此处查看完整文档:https://cloud.google.com/sql/docs/external#appaccessIP

不需要将 IP 地址列入白名单的替代方法是使用 Cloud SQL 套接字库,该库使用带有短期证书的 SSL session : https://cloud.google.com/sql/docs/external#java

不建议将 0.0.0.0/0 列入白名单,因为它向全世界开放数据库。

关于java - 使用简单的 Java 程序 (JDBC) 连接到 Google SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40861457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com