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

时间:2016-11-29 08:54:16

标签: java jdbc google-cloud-sql

我有一个简单的Java程序(不是Web应用程序/ Google Engine /等)。 我浏览了Google Cloud SQL网站上的所有指南,但我无法弄清楚如何连接到服务器。

现在我有

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

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

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

我做错了吗? 我还为根建议设置了一个密码。我应该在代码中的某处指定它吗?

感谢。

修改

按照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套接字工厂"。

在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是用户密码(你必须设置它。看看谷歌的教程)。

1 个答案:

答案 0 :(得分:1)

您是否创建了google mysql的本地实例,或者您可以连接direclty。您可以查看以下链接Google mysql database cloud connection in java 或查看Google驱动程序,例如Class.forName(“com.mysql.jdbc.GoogleDriver”);