尝试连接到 Cloud SQL 实例时出现 403
Posted
技术标签:
【中文标题】尝试连接到 Cloud SQL 实例时出现 403【英文标题】:Getting 403 when trying to connect to Cloud SQL instance 【发布时间】:2021-11-30 13:52:42 【问题描述】:我正在尝试创建从 Data Fusion 到 Cloud SQL Postgres 的连接。
我遇到了连接错误,不知道如何解决。 这是我到目前为止所做的:
启用 Datacloud API 的 Data Fusion 实例是使用私有 IP 集群创建的。 Cloud SQL 的所有权限均授予 Data Fusion 服务帐号(SQL 客户端、-manager、管理员)。 在 Cloud SQL 实例中,启用了专用网络。当我尝试创建与我们的 Cloud SQL (Postgres) 实例的连接时,会出现此错误:
无法通过连接字符串创建与数据库的连接:jdbc:postgresql://google/"省略的项目 ID"&socketFactory=com.google.cloud.sql.postgres.SocketFactory&useSSL=true:5432/"省略的表名"和参数:user="省略"。
错误:GoogleJsonResponseException: 403 Forbidden "code" : 403, "errors" : [ "domain" : "global", "message" : "客户端无权发出此请求。", "reason" : "notAuthorized" ], "message" : "客户端无权发出此请求。" 。
确保指定正确的连接属性。
【问题讨论】:
数据融合服务账号是否有读数据库/表的权限? 谢谢这个问题:) 是的...问题出在连接上,而不是在阅读表中... 您的完整连接字符串是什么样的?您是否指定cloudSqlInstance
?见github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory/…。
【参考方案1】:
403 表示您没有权限。确保您的服务使用的任何服务帐户在实例所在的项目中都具有“Cloud SQL 客户端”角色,并且启用了 Cloud SQL Admin API(在服务帐户所属的项目中)。
【讨论】:
【参考方案2】:使用私有数据融合实例连接云 sql 时,您需要设置cloud sql Auth proxy。至少我们是这样管理的。
【讨论】:
以上是关于尝试连接到 Cloud SQL 实例时出现 403的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 android 连接到 sql server 时出现 NullPointerException
从 Cloud Tasks 触发 HTTP Cloud Function 时出现 PERMISSION_DENIED 403 错误