Google Cloud Shell 或 Cloud SQL 问题,表的 postgres 错误权限被拒绝昨天询问

问题描述 投票:0回答:1

我正在使用 Cloud Shell 并使用我的 CLOUD SQL 用户帐户连接到我的 Cloud SQL 实例/postgres 数据库,但在尝试执行 SELECT 时收到“错误权限被拒绝 for table”。

我不确定我的问题是我的 IAM GCP 帐户访问权限还是我的 Cloud SQL 用户帐户。我的 Cloud SQL 用户帐户具有 cloudsqlsuperuser root 访问权限。

使用 Cloud Shell 连接到 postgres 数据库时,是同时使用 IAM 账户角色还是仅使用 Cloud SQL 用户账户权限?

如果我需要更新任一帐户的角色/权限,以便我可以查询(选择)我需要更新哪个帐户以及哪些角色/权限; IAM 还是 SQL 用户?

postgresql google-cloud-sql google-iam google-cloud-shell
1个回答
0
投票

我假设当您导航到

Cloud SQL > Users
(网址:
https://console.cloud.google.com/sql/instances/<instance-name>/users
)时,您会在那里列出多个用户,其中至少有一个名为
postgres
以及您正在尝试使用的当前用户名。

发生的情况是,当您创建新用户时,即使它被授予

cloudsqlsuperuser
角色,但这并不意味着它具有
SELECT
访问现有数据库的权限。 您可以在这里阅读更多相关信息

为了让当前用户访问该特定数据库,请首先在 Cloud Shell 中使用您的

postgres
用户登录(将
<database-name>
替换为您正在使用的 Cloud SQL 中的数据库名称):

gcloud sql connect pg-sample --user=postgres -d=<database-name>

现在,在以 postgres 打开的新

psql
会话中,运行
GRANT
命令(将
<table-name>
替换为您要授予访问权限的表的名称,并将
<username>
替换为原始用户的名称)您希望授予访问权限):

GRANT SELECT ON "<table-name>" to "<username>";

当这两个步骤都成功后,您应该能够再次关闭并打开 Cloud Shell,使用您的目标用户登录并运行

SELECT
查询。

© www.soinside.com 2019 - 2024. All rights reserved.