我正在 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)
您必须以GRANTuser身份发出语句test_user。
GRANTuser
test_user
只有所有者才能授予对象权限(或已授予权限的用户WITH GRANT OPTION)。
WITH GRANT OPTION