使用 bash 从 postgres 使用 psql 命令传输与数据库所有权和相关实体相关的所有内容

Transfer using psql command from postgres everything related to a database ownership and related entities using bash

我有一个属于角色 postgres 的数据库。

在 bash 中使用 psql 命令我想将数据库的所有权及其中的所有内容(模式、表、视图、序列、触发器等)转移给新角色。

我有:

sudo -u postgres psql << EOF
                ALTER DATABASE ${database} OWNER TO ${role};
                GRANT ALL ON DATABASE ${database} TO ${role};
EOF

够了吗?

不,那不行。

如果您可以使用 REASSIGN OWNED 就好了,但是您不能使用安装超级用户这样做,因为系统对象无法更改所有权。

您必须确定要更改其所有权的所有对象,并对每个对象使用 ALTER ... OWNER TO ...