RDS PostgreSQL 的新手并尝试创建一个新用户来接管以前的用户。
1:因为新用户不是超级用户,我必须按照这些说明在删除之前重新分配以前的用户对象,如下所示:
CREATE ROLE TempUser WITH PASSWORD 'temppass' LOGIN;
2:使 TempUser 成为新老用户的一部分
GRANT OldUser TO TempUser;
GRANT NewUser TO TempUser;
3:为每个数据库(循环)重新分配 OldUser 对象和 Drop Owned:
SELECT DBLINK('dbname=some_db user=TempUser password=temppass host=localhost', 'REASSIGN OWNED BY OldUser TO NewUser; DROP OWNED BY OldUser;');
在第 3 步是错误发生的地方。
ERROR: could not establish connection
当我在函数中运行上面的代码时会发生错误。但是当我手动执行这些步骤时,它可以工作。该函数位于当前服务器的 Db 中。
当我手动运行并且它工作时,我在 MasterUser(服务器的创建者)的上下文中运行。
但是,如果我尝试在上面的 dblink 中使用 masteruser 凭据,则在函数中运行时,我会收到此错误:
permission denied to reassign objects
我还尝试向 TempUser 授予以下权限:
GRANT CONNECT ON DATABASE some_db TO TempUser;
GRANT ALL PRIVILEGES ON DATABASE some_db TO TempUser;
但没有奏效。
对此的任何帮助表示赞赏。
谢谢