PG::InsufficientPrivilege: ERROR: permission denied for relation schema_migrations rake db:create
我正在尝试在Rails中创建数据库。 在postgres中我看到了开发和测试数据库,但是我收到了权限错误。 我试过按照这个链接,对我不起作用。
错误:
Rails:关系schema_migrations的权限被拒绝
1 2 3 4 5 6 7 8 9 10 11 | default: &default adapter: postgresql encoding: unicode pool: 5 host: localhost username: root password: development: <<: *default database: svp-chicago_development |
我登录postgres并执行了这些命令。
1 2 3 4 5 | psql postgres CREATE USER root CREATE DATABASE svp-chicago_development GRANT ALL PRIVILEGES ON DATABASE svp-chicago_development to root ALTER DATABASE svp-chicago_development OWNER TO root |
当我
我有同样的问题,我通过在角色中添加"超级用户"来解决。
首先,列出用户及其权限。如果您遵循上述命令,则root用户没有"超级用户"属性。
1 2 3 4 5 6 | postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- other | Superuser, Create role, Create DB, Replication, Bypass RLS | {} root | | {} |
接下来,将root升级为"超级用户"。
1 2 | postgres=# ALTER USER root WITH SUPERUSER; ALTER ROLE |
再次列出用户及其权限。现在root有"超级用户"。
1 2 3 4 5 6 | postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- other | Superuser, Create role, Create DB, Replication, Bypass RLS | {} root | Superuser | {} |
希望能帮助到你。
我猜你错过了为
1 2 3 4 | CREATE USER root WITH PASSWORD 'your_new_password'; CREATE DATABASE svp-chicago_development; GRANT ALL PRIVILEGES ON DATABASE svp-chicago_development to root; ALTER DATABASE svp-chicago_development OWNER TO root; |
为了防止其他人来到这里遇到同样的问题,我确实尝试了许多其他解决方案,最适合我的解决方案如下:在PostgreSQL中同时修改所有表上的OWNER
-
这是有效的,因为我的用户(例如
root 或postgres )具有Superuser 权限,因此在尝试分配system 对象时尝试REASSIGN OWNED会出错 - ALTER DATABASE不起作用,因为问题是对象所有权而不是数据库所有权。更改数据库上的所有者不会传播到该数据库模式上的其他对象