【问题标题】:pg_dump: [archiver (db)] query failed: ERROR: permission denied for relation aboutspg_dump: [archiver (db)] query failed: ERROR: permission denied for relationship abouts
【发布时间】:2017-01-12 17:51:11
【问题描述】:

我正在尝试转储我的 pg db,但遇到了这些错误,请建议

pg_dump: [archiver (db)] query failed: ERROR:  permission denied for relation abouts
pg_dump: [archiver (db)] query was: LOCK TABLE public.abouts IN ACCESS SHARE MODE

【问题讨论】:

    标签: ruby postgresql ruby-on-rails-3


    【解决方案1】:

    您执行pg_dump 的用户没有公共架构的权限。

    如果允许,添加权限:

    GRANT USAGE ON SCHEMA public TO <user>;
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user>;
    

    【讨论】:

      【解决方案2】:

      当使用无法打开对象转储对象的ROLE(用户)时,这可能是一个常见错误。

      如前所述,您可以授予要转储的特定架构,甚至可以使用带有SUPERUSER 属性的ROLE

      请注意,当您与某些云数据库提供商(例如 AWS/RDS)打交道时,您不会收到具有 SUPERUSER 属性的用户,因此您需要设法确保用于转储的用户拥有所有需要访问权限。

      https://www.postgresql.org/docs/current/static/sql-grant.html 将显示如何将GRANT 分配给数据库中的许多对象,但请记住,在还原时您需要先创建数据库。仅当您使用pg_dumpall 时,这是不必要的,但您还需要转储ROLES

      【讨论】:

      • 我正在使用 ROLE 'postgres' 并收到此错误,因此我不相信此答案。
      • @user10664542:角色“postgres”不一定是真正的超级用户,可以访问所有对象。甚至可能需要使用“postgres”角色来检查您拥有的权限。当与psql 连接时,您可以使用\du。
      【解决方案3】:

      更改用户权限:使用以下命令以 sudo 用户身份登录

      sudo -u postgres psql
      

      更改用户角色

      alter role <user-name> superuser;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-30
        • 2022-12-02
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多