使用pg_restore导入PostgreSQL数据库时遇权限拒绝报错求助
解决pg_restore执行CREATE SCHEMA时的权限拒绝错误
问题场景
已通过createdb创建数据库mydb,执行命令pg_restore -h localhost -p 5410 -U user -d mydb -v 20220711.dump导入dump文件时,出现权限错误:
pg_restore: [归档程序(db)] 无法执行查询:错误:数据库mydb的权限被拒绝
执行的命令为:CREATE SCHEMA mydb;
解决方案
方案1:使用真正的超级用户执行恢复
PostgreSQL默认的postgres用户为超级用户,拥有所有权限,替换命令中的用户为postgres重新执行:
pg_restore -h localhost -p 5410 -U postgres -d mydb -v 20220711.dump
方案2:为当前用户授予数据库的CREATE权限
若需保留使用user用户,先登录PostgreSQL控制台为该用户授予mydb数据库的CREATE权限:
-- 登录到PostgreSQL控制台 psql -h localhost -p 5410 -U postgres -d mydb -- 执行授权语句 GRANT CREATE ON DATABASE mydb TO "user"; -- 退出控制台 \q
完成授权后重新执行原pg_restore命令即可。
方案3:手动创建Schema后跳过创建步骤
若已确认所需Schema结构,可手动创建Schema并设置权限,再让pg_restore跳过Schema创建步骤:
- 手动创建并配置Schema:
psql -h localhost -p 5410 -U postgres -d mydb CREATE SCHEMA mydb; ALTER SCHEMA mydb OWNER TO mydb; \q
- 执行
pg_restore时添加--no-create-schema参数:
pg_restore -h localhost -p 5410 -U user -d mydb -v --no-create-schema 20220711.dump
内容的提问来源于stack exchange,提问作者user3093583
相关产品推荐
相关产品推荐

