GCloud云SQL Postgres:"错误:拒绝对表<table>的权限"

3

我在 Google Cloud SQL 上拥有一个由用户“api”创建的 PostgreSQL 数据库。现在我想使用自己的用户读取该数据库中的某些数据。我可以连接到数据库,但运行以下命令时出错:

SELECT * FROM data;

I get the error:

ERROR:  permission denied for table data

编辑

我尝试过GRANT ALL PRIVILEGES ON DATABASE website TO sev;但不起作用。定义数据库的SQL如下:

CREATE DATABASE website
    WITH 
    OWNER = cloudsqlsuperuser
    ENCODING = 'UTF8'
    LC_COLLATE = 'en_US.UTF8'
    LC_CTYPE = 'en_US.UTF8'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1;

GRANT ALL ON DATABASE website TO cloudsqlsuperuser;

GRANT TEMPORARY, CONNECT ON DATABASE website TO PUBLIC;

GRANT ALL ON DATABASE website TO sev;
1个回答

4
GRANT 必须由拥有者用户 api 运行。 在数据库上授予权限是不够的。要访问表,您必须在表本身以及包含该表的模式上拥有权限。

我尝试了这个,但也没有起作用,我已经修改了我的原始问题以展示现在数据库的样子。 - sev
但是,既然没有GRANT ALL ... TO api这一行,并且所有者是“cloudsqlsuperuser”,那么“api”用户为什么有访问权限呢?在我看来,似乎还有其他方法可以实现这一点... - sev
有没有办法查看 api 有哪些权限?我检查了 \du,发现 apisev 都是 cloudsqlsuperuser 组的成员,而该组是数据库的所有者。我本以为 api 的权限来自于此,但这并不能解释为什么 sev 没有这些权限。 - sev
你的想法是错误的。继续授予那些权限吧! - Laurenz Albe
2
在表的访问控制列表中,请查看文档 - Laurenz Albe
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接