无法将所有权限授予 Postgres 上的新用户
Unable to grant all privileges to new user on Postgres
我正在 Postgres 数据库 (AWS RDS) 中创建一个新用户,并尝试向该用户授予 运行 现有数据库 public 架构中所有表的所有权限。它因以下错误而失败。我什至在以 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;
ERROR: permission denied for relation table1
有人可以帮我吗?
编辑:找到了解决方法,但不确定这是否是最佳方法。以 postgres 用户身份登录,运行 以下查询,然后以 new_user 身份重新登录,并且能够对表进行 运行 select 查询。
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)
您必须以用户 test_user
的身份发出 GRANT
语句。
只有所有者才能授予对象权限(或已授予权限的用户 WITH GRANT OPTION
)。
我正在 Postgres 数据库 (AWS RDS) 中创建一个新用户,并尝试向该用户授予 运行 现有数据库 public 架构中所有表的所有权限。它因以下错误而失败。我什至在以 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;
ERROR: permission denied for relation table1
有人可以帮我吗?
编辑:找到了解决方法,但不确定这是否是最佳方法。以 postgres 用户身份登录,运行 以下查询,然后以 new_user 身份重新登录,并且能够对表进行 运行 select 查询。
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)
您必须以用户 test_user
的身份发出 GRANT
语句。
只有所有者才能授予对象权限(或已授予权限的用户 WITH GRANT OPTION
)。