首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决还原PostgreSQL数据库时的权限问题

如何解决还原PostgreSQL数据库时的权限问题
EN

Stack Overflow用户
提问于 2012-11-16 12:48:45
回答 6查看 135K关注 0票数 121

我使用以下命令为Postgres数据库转储了一个干净的、无所有者的备份

pg_dump sample_database -O -c -U

稍后,当我使用以下命令恢复数据库时

psql -d sample_database -U app_name

但是,我遇到了几个错误,这些错误使我无法恢复数据:

代码语言:javascript
复制
ERROR:  must be owner of extension plpgsql
ERROR:  must be owner of schema public
ERROR:  schema "public" already exists
ERROR:  must be owner of schema public
CREATE EXTENSION
ERROR:  must be owner of extension plpgsql

我深入研究了SQL pg_dump生成的纯文本,发现其中包含SQL。

代码语言:javascript
复制
CREATE SCHEMA public;
COMMENT ON SCHEMA public IS 'standard public schema';
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

我认为原因是用户app_name没有修改public模式和plpgsql的权限。

我该如何解决这个问题呢?

EN

回答 6

Stack Overflow用户

发布于 2017-02-24 22:21:47

AWS RDS用户如果您收到此消息,那是因为您不是超级用户,根据aws文档,您不能成为超级用户。我发现我必须忽略这些错误。

票数 66
EN

Stack Overflow用户

发布于 2017-10-11 21:20:07

对于使用Google Cloud Platform的用户,任何错误都将停止导入过程。就我个人而言,根据我发出的pg_dump命令,我遇到了两个不同的错误:

1- The input is a PostgreSQL custom-format dump. Use the pg_restore command-line client to restore this dump to a database.

当您尝试以非纯文本格式转储DB时发生。即当命令缺少-Fp或--format=普通参数时。但是,如果将其添加到命令中,则可能会遇到以下错误:

2- SET SET SET SET SET SET CREATE EXTENSION ERROR: must be owner of extension plpgsql

这是一个权限问题,我无法使用GCP docs中提供的命令、当前线程中的提示或Google Postgres团队here的建议来解决。建议下发以下命令:

pg_dump -Fp --no-acl --no-owner -U myusername myDBName > mydump.sql

在我的例子中,唯一成功的方法是手动编辑转储文件,并注释掉所有与plpgsql相关的命令。

我希望这对依赖GCP的人有所帮助。

更新:

转储文件并注释掉扩展名更容易,特别是因为有些转储可能很大:pg_dump ... | grep -v -E '(CREATE\ EXTENSION|COMMENT\ ON)' > mydump.sql

可以将其范围缩小到plpgsql:pg_dump ... | grep -v -E '(CREATE\ EXTENSION\ IF\ NOT\ EXISTS\ plpgsql|COMMENT\ ON\ EXTENSION\ plpgsql)' > mydump.sql

票数 31
EN

Stack Overflow用户

发布于 2012-11-16 17:31:31

在这种情况下,您可能可以安全地忽略错误消息。未能向公共模式添加注释并安装plpgsql (应该已经安装)不会造成任何真正的问题。

但是,如果您想进行完整的重新安装,则需要具有适当权限的用户。当然,这不应该是您的应用程序例行公事运行的用户。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13410631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档