pg_restore 数据库作为 PostgreSQL 16 中所有者的不同用户

问题描述 投票:0回答:1

我希望使用

pg_restore
导入 PostgreSQL 16 数据库,但是我遇到了数据库和表的所有权问题。

我希望数据库由

root
(确实如此)拥有,表由
ibrox
用户拥有。

CREATE DATABASE template_crmpicco_1872 TEMPLATE template0 ENCODING 'UTF8'
GRANT ALL ON DATABASE template_crmpicco_1872 TO ibrox

当我尝试使用

ibrox
用户恢复数据库时,出现此错误:

Command /usr/bin/pg_restore --disable-triggers -d template_crmpicco_1872 -h crmpiccopg.anh73jdk19.us-east-1.rds.amazonaws.com -n public -U ibrox -O -x /tmp/tmpimy39zj2/template_crmpicco_1872

pg_restore: error: could not execute query: ERROR:  permission denied for schema public

如何使用 PostgreSQL 16 实现这一目标?

postgresql permissions privileges pg-restore postgresql-16
1个回答
0
投票

在恢复数据之前,请授予用户对

CREATE
架构的
pzblic
权限:

GRANT CREATE ON SCHEMA public TO ibrox;

请注意,PostgreSQL v15 中的行为发生了变化。在此之前,每个人都可以在

public
模式中创建对象。这构成了一个令人头痛的安全问题,因此行为发生了变化。

© www.soinside.com 2019 - 2024. All rights reserved.