恢复PostgreSQL数据库时如何解决权限问题

恢复PostgreSQL数据库时如何解决权限问题,第1张

概述我使用该命令为Postgres数据库转储了一个干净的,没有所有者备份 pg_dump sample_database -O -c -U 后来,当我用数据库恢复时 psql -d sample_database -U app_name 但是,我遇到了一些错误,导致我无法恢复数据: ERROR: must be owner of extension plpgsqlERROR: must be o 我使用该命令为Postgres数据库转储了一个干净的,没有所有者备份

pg_dump sample_database -O -c -U

后来,当我用数据库恢复时

psql -d sample_database -U app_name

但是,我遇到了一些错误,导致我无法恢复数据:

ERROR:  must be owner of extension plpgsqlERROR:  must be owner of schema publicERROR:  schema "public" already existsERROR:  must be owner of schema publicCREATE EXTENSIONERROR:  must be owner of extension plpgsql

我深入研究了纯文本sql pg_dump生成,我发现它包含sql

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没有更改公共模式和plpgsql的权限.

我怎么能解决这个问题?

要解决此问题,您必须分配正确的所有权权限.请尝试以下解决方案,以解决特定用户的所有权限相关问题,但正如评论中所述,这不应在生产中使用:
root@server:/var/log/postgresql# sudo -u postgres psqlpsql (8.4.4)Type "help" for help.postgres=# \du               List of roles    Role name    | Attributes  | Member of-----------------+-------------+----------- <user-name>    | Superuser   | {}                 : Create DB postgres       | Superuser   | {}                 : Create role                 : Create DBpostgres=# alter role <user-name> superuser;ALTER RolEpostgres=#

因此,在超级用户帐户sudo -u postgres psql下连接到数据库并执行ALTER RolE< user-name>超级用户;声明.

请记住,这不是多站点托管服务器上的最佳解决方案,因此请查看分配各个角色:https://www.postgresql.org/docs/current/static/sql-set-role.html和https://www.postgresql.org/docs/current/static/sql-alterrole.html.

总结

以上是内存溢出为你收集整理的恢复PostgreSQL数据库时如何解决权限问题全部内容,希望文章能够帮你解决恢复PostgreSQL数据库时如何解决权限问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1169966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存