加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 16:30:29 所属栏目:百科 来源:网络整理
导读:我使用该命令为Postgres数据库转储了一个干净的,没有所有者备份 pg_dump sample_database -O -c -U 后来,当我用数据库恢复时 psql -d sample_database -U app_name 但是,我遇到了一些错误,导致我无法恢复数据: ERROR: must be owner of extension plpgsqlER
我使用该命令为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

我深入研究了纯文本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 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=#

因此,在超级用户帐户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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读