Kit*_*nde 6 postgresql postgresql-9.4 amazon-rds
我现在的用户是 pronto
mediapop_staging=> select current_user;
current_user
--------------
pronto
(1 row)
Run Code Online (Sandbox Code Playgroud)
此用户是在 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 |
Run Code Online (Sandbox Code Playgroud)
但我得到这个:
mediapop_staging=> REASSIGN OWNED BY pronto TO mediapop_staging;
ERROR: permission denied to reassign objects
Run Code Online (Sandbox Code Playgroud)
为什么?我该如何解决?
感谢@Spike的评论,提供了对我有用的解决方案(来源)
这假设对象从一个角色重新分配admin到另一个角色new_admin。
1.创建新角色:
mydb=> CREATE ROLE change_owner LOGIN;
CREATE ROLE
Run Code Online (Sandbox Code Playgroud)
2.使旧所有者角色和新所有者角色都成为新创建的角色的成员:
mydb=> GRANT admin TO change_owner;
GRANT ROLE
mydb=> GRANT new_admin TO change_owner;
GRANT ROLE
Run Code Online (Sandbox Code Playgroud)
3.从psql注销并使用新角色登录:
$ psql -U change_owner mydb
mydb=>
Run Code Online (Sandbox Code Playgroud)
4.执行重新分配:
mydb=> REASSIGN OWNED BY admin TO new_admin
REASSIGN OWNED
Run Code Online (Sandbox Code Playgroud)