Postgresql

為什麼我的所有權變更被拒絕?

  • November 2, 2021

我目前的使用者是pronto

mediapop_staging=> select current_user;
current_user
--------------
pronto
(1 row)

此使用者是在 AWS RDS 上創建的標準超級使用者。

mediapop_staging=> \du pronto
                       List of roles
Role name |          Attributes           |    Member of
-----------+-------------------------------+-----------------
pronto    | Create role, Create DB       +| {rds_superuser}
          | Password valid until infinity |

但我得到了這個:

mediapop_staging=> REASSIGN OWNED BY pronto TO mediapop_staging;
ERROR:  permission denied to reassign objects

為什麼?我該如何解決?

感謝@Spike 的評論,為我工作的解決方案(來源

這假設對像從一個角色重新分配到另一個admin角色new_admin

1.創建一個新角色:

mydb=> CREATE ROLE change_owner LOGIN;
CREATE ROLE

2.使舊所有者和新所有者角色都成為新創建角色的成員:

mydb=> GRANT admin TO change_owner;
GRANT ROLE
mydb=> GRANT new_admin TO change_owner;
GRANT ROLE

3.從 psql 註銷並使用新角色登錄:

$ psql -U change_owner mydb
mydb=>

4.執行重新分配:

mydb=> REASSIGN OWNED BY admin TO new_admin
REASSIGN OWNED

REASSIGN在沒有超級使用者的情況下使用時有一些不直覺的權限要求。請參閱SO上的其他文章,我在其中回答了相同的問題。

引用自:https://dba.stackexchange.com/questions/212279