我正在使用 Hibernate + Java + Jersey + MYSql,它在本地计算机上运行良好。但是我无法在 Google Cloud 上创建与 MySql 的连接。
我认为 MYSql 配置和实例创建在 Google Cloud 上很好,但我无法通过 hibernate 属性传递所有配置。请参阅此处的 Google 示例代码:
// The configuration object specifies behaviors for the connection pool.
HikariConfig config = new HikariConfig();
// Configure which instance and what database user to connect with.
config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));
config.setUsername(DB_USER); // e.g. "root", "postgres"
config.setPassword(DB_PASS); // e.g. "my-password"
// For Java users, the Cloud SQL JDBC Socket Factory can provide authenticated connections.
// See https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory for details.
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.SocketFactory");
config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);
config.addDataSourceProperty("useSSL", "false");
// ... Specify additional connection properties here.
// ...
// Initialize the connection pool using the configuration object.
DataSource pool = new HikariDataSource(config);
现在我不知道如何在Hibernate中传递cloudSqlInstance
和socketFactory
。我尝试传递这些参数,但它不起作用:
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://google/pashumandi_db?cloudSqlInstance=pashuserver:asia-south1:mysql-instance&socketFactory=com.google.cloud.sql.mysql.SocketFactory
hibernate.connection.username = abc_user
hibernate.connection.password = 12345678
hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
您能否告诉我连接 Google Cloud 上的 MySql 的正确 hibernate 配置是什么?谢谢。
最佳答案
对于 Google Cloud,您可以选择您的数据库实例,然后在“连接”下您可以选择允许来自公共(public) IP 地址的连接,然后将您计算机的 IP 地址添加到授权建立连接的地址列表中。您只需在 URL 中使用数据库实例的公共(public) IP 地址即可。
关于java - 如何为 Google Cloud SQL 配置 Java Hibernate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236468/