一尘不染

无法在 Postgres 上向新用户授予所有权限

sql

我正在 Postgres 数据库 (AWS RDS) 中创建一个新用户,并尝试将现有数据库的公共架构中所有表的所有权限授予该用户。它因以下错误而失败。我什至在以 rds_superuser (postgres) 登录后尝试并得到相同的错误。

psql(13.3,服务器 10.15)

test_db=> \dt
              List of relations
 Schema |     Name     | Type  |    Owner     
--------+--------------+-------+--------------
 public | table1       | table | test_user
 public | table2       | table | test_user
 public | table3       | table | test_user
(3 rows)

test_db=> CREATE ROLE new_user WITH LOGIN PASSWORD 'by1ne8Cs0Z2' VALID UNTIL '2021-05-29';
CREATE ROLE

test_db=> GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO new_user;

错误:关系表 1 的权限被拒绝

有人可以帮我吗?

编辑:找到了一种解决方法,但不确定这是否是最佳方法。以 postgres 用户身份登录,运行以下查询,然后以 new_user 身份重新登录,并且能够对表运行选择查询。

test_db=> \du new_user
                                 List of roles
    Role name    |                 Attributes                  |   Member of    
-----------------+---------------------------------------------+----------------
 new_user        | Password valid until 2021-05-29 00:00:00+00 | {}

test_db=> GRANT test_user to new_user;

test_db=> \du new_user
                                 List of roles
    Role name    |                 Attributes                  |   Member of    
-----------------+---------------------------------------------+----------------
 new_user        | Password valid until 2021-05-29 00:00:00+00 | {test_user}

EDIT2:请在下面找到输出。

test_db=> \dp table1 
                               Access privileges
 Schema |    Name    | Type  | Access privileges | Column privileges | Policies 
--------+------------+-------+-------------------+-------------------+----------
 public | table1     | table |                   |                   | 
(1 row)

阅读 135

收藏
2021-05-30

共1个答案

一尘不染

您必须以GRANTuser身份发出语句test_user

只有所有者才能授予对象权限(或已授予权限的用户WITH GRANT OPTION)。

2021-05-30