
我有一个数据库my_database
,它在架构下有一些名为my_table_1
、my_table_2
、 ... 的表。我需要向用户授予架构中所有表的选择权限,因此我执行以下 SQL 命令:my_table_128
public
public
my_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
- 与超级用户或具有可授予权限的用户连接。
- 连接到表所在的数据库。 [最重要的]
- 然后,运行以下命令: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;