gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:04:48 26 4
gpt4 key购买 nike

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

pg_dump sample_database -O -c -U

稍后,当我使用

恢复数据库时

psql -d sample_database -U app_name

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

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

我深入研究了 pg_dump 生成的纯文本 SQL,我发现它包含 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 没有更改 public 模式和 plpgsql 的权限。

我该如何解决这个问题?

最佳答案

要解决此问题,您必须分配适当的所有权权限。尝试以下应该解决特定用户的所有权限相关问题,但如评论中所述,这不应在生产中使用:

root@server:/var/log/postgresql# sudo -u postgres psql
psql (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 DB

postgres=# alter role <user-name> superuser;
ALTER ROLE
postgres=#

所以连接到 super 用户帐户下的数据库sudo -u postgres psql并执行 ALTER ROLE <user-name> Superuser;陈述。

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

关于postgresql - 恢复PostgreSQL数据库时如何解决权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com