【问题标题】:Rails: InsufficientPrivilege: ERROR: permission denied for relation schema_migrationsRails:InsufficientPrivilege:错误:关系 schema_migrations 的权限被拒绝
【发布时间】:2018-02-24 11:11:53
【问题描述】:

在我的 rails 应用程序中,我在 database.yml 文件中使用 postgresql 作为我的适配器。我想重命名数据库并将它们重新分配给不同的所有者。所以我继续并通过运行更改了我的 postgres 数据库:

ALTER DATABASE old_name RENAME TO new_name;
CREATE ROLE new_role WITH PASSWORD 'pw123';
ALTER USER new_role CREATEDB;
ALTER USER new_role LOGIN;

然后我也相应地修改了我的database.yml文件

毕竟,当我再次运行应用程序时,错误:InsufficientPrivilege: ERROR: permission denied for relation schema_migrations

这个新角色拥有和前任主人一模一样的特权,但不知道为什么对新主人大吼大叫。

我相信我在这里遗漏了一个小东西,但我不知道是什么。那么我应该怎么做才能让我的应用接受新的 postgresql 更改?

【问题讨论】:

    标签: ruby-on-rails postgresql


    【解决方案1】:

    数据库已更改所有权,但其中的对象没有。所以schema仍然属于老用户,新用户没有权限。

    在权限和所有权方面,databasea 与所有其他对象一样是对象。打个比方,你不会仅仅因为拥有房子就拥有房子中的所有东西

    REASSIGN OWNED SQL 命令可以更改数据库中所有对象的所有权。

    【讨论】:

    • 谢谢,你能解释一下吗?为什么对象和数据库的所有权是分开的?这样设计有什么意义。
    猜你喜欢
    • 2016-11-11
    • 2016-02-21
    • 2015-11-14
    • 2015-10-13
    • 2022-06-13
    • 2012-11-08
    • 2014-11-10
    • 2013-03-09
    • 2019-12-18
    相关资源
    最近更新 更多