我有一个数据库(谷歌云SQL)到一个gcloud项目(A),我需要从另一个gcloud项目(B)读取/写入它。我的问题是项目B无法对项目A上的数据库执行这些操作。我认为这是一个特权问题。
我在官方文档(https://cloud.google.com/sql/docs/mysql/connect-app-engine)中找到了这个:
1)授予应用程序访问权限:
转到Google Cloud Platform中的Cloud SQL Instances页面。 安慰。单击实例名称以打开其“概述”页面。选择 访问控制>授权。在授权的应用程序引擎中 单击应用程序部分,单击添加应用程序ID并输入 申请ID。单击“完成”退出编辑模式。单击“保存”以更新 实例
2)更新您的申请:
转到Google Cloud Platform中的Cloud SQL Instances页面 安慰。单击实例名称以打开其“概述”页面。复制 “属性”中的实例连接名称。使用以下内容 应用程序中的连接字符串:
/ CLOUDSQL /< INSTANCE_CONNECTION_NAME>
问题在于菜单与其说的不完全相同。
另外,我发现了另一套简短的说明:gcloud console-> SQL-> " id_of_instance" - >授权:指令图像。
然而,它没有用。
这是我的连接字符串:
< property name =" ae-cloudsql.cloudsql-database-url" 值="的jdbc:谷歌的:mysql://项目:美国central1:实例/数据库用户=用户放大器;密码=通" />
我尝试创建连接时出现的错误是:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败。成功发送到服务器的最后一个数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。
我创建此连接的代码是:
Connection conn = DriverManager.getConnection(System.getProperty("ae-cloudsql.cloudsql-database-url"));
非常感谢你。