为什么我不能向 PostgreSQL 模式中的所有表授予选择权限?

为什么我不能向 PostgreSQL 模式中的所有表授予选择权限?

我有一个数据库my_database,它在架构下有一些名为my_table_1my_table_2、 ... 的表。我需要向用户授予架构中所有表的选择权限,因此我执行以下 SQL 命令:my_table_128publicpublicmy_db_user

GRANT SELECT ON ALL TABLES IN SCHEMA public to my_db_user;

并且它执行时没有错误。但在我以用户身份连接my_db_user并尝试选择某些内容后,它显示权限被拒绝。我尝试以管理员用户身份执行以下 SQL 命令:

GRANT SELECT ON TABLE public.my_table_1 TO my_db_user;

然后与用户连接my_db_user并尝试选择一些东西,它起作用了。

答案1

错误:表 asm_info 的权限被拒绝 SQL 状态:42501

  1. 与超级用户或具有可授予权限的用户连接。
  2. 连接到表所在的数据库。 [最重要的]
  3. 然后,运行以下命令:GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO developer;

-bash-4.1$ psql erp; erp->表所在的数据库

ERP=# \c

您现在以用户“postgres”的身份连接到数据库“erp”。

erp=# 授予开发人员对公共模式中所有表的所有权限;

答案2

在创建表之前,您是否授予了所有表的权限?如果是这样,您可能需要再次授予权限。

我喜欢将公共模式中的所有项目公开给所有用户,因此您可能想尝试:

ALTER DEFAULT PRIVILEGES IN SCHEMA public 
GRANT SELECT ON TABLES TO PUBLIC;

相关内容