回答

收藏

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

技术问答 技术问答 250 人阅读 | 0 人回复 | 2023-09-12

我正在 Postgres 数据库 (AWS RDS) 创建一个新用户,并试图将现有数据库公共架构中所有表格的所有权授予用户。它因以下错误而失败。我甚至在 rds_superuser (postgres) 登录后尝试并得到同样的错误。( {# b- T$ i9 [
psql(13.3,服务器 10.15), A) G) ]' \1 x* g
test_db=> \dt              List of relations Schema |     Name     | Type  |    Owner     -------- -------------- ------- -------------- public | table      | 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 ROLEtest_db=> GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO new_user;错误:拒绝关系表 1 的权限# U: f& u0 ]$ M3 x
有人能帮我吗?( \- p  l" r5 }  t  T
编辑:我找到了一个解决方案,但我不确定这是否是最好的方法。postgres 用户身份登录,操作以下查询,然后 new_user 重新登录身份,并可查询表操作选择。0 g0 s% w* d) G6 g3 T
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}EDIT请在下面找到输出。
) g- h9 n* ]3 }" |) Q  S+ N: Btest_db=> \dp table1                                Access privileges Schema |    Name    | Type  | Access privileges | Column privileges | Policies -------- ------------ ------- ------------------- ------------------- ---------- public | table1     | table |                   |                   | (1 row)               
3 ?- o2 r1 F( y5 `! O5 B9 _5 _  M$ G    解决方案:                                                                . [1 N; R$ U& p4 B- G2 @1 R
                                                                您必须以GRANTuser身份发出句子test_user。
; K! c$ `3 q3 N2 f9 u5 s只有所有者才能授予对象权限(或授予权限的用户)WITH GRANT OPTION)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则