Postgresql
為什麼我的所有權變更被拒絕?
我目前的使用者是
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上的其他文章,我在其中回答了相同的問題。