PG:: InsufficientPrivilege: ОШИБКА: разрешение отклонено для отношения schema_migrations rake db: create
Я пытаюсь создать базу данных в Rails. В postgres я вижу базу данных разработки и тестирования, однако я получаю ошибку разрешений. Я попытался следовать этой ссылке, не работал у меня.
Ошибка: PG::InsufficientPrivilege: ERROR: permission denied for relation schema_migrations : SELECT "schema_migrations".* FROM "schema_migrations"
Rails: разрешение отклонено для отношения schema_migrations
default: &default
adapter: postgresql
encoding: unicode
pool: 5
host: localhost
username: root
password:
development:
<<: *default
database: svp-chicago_development
Я вхожу в postgres и выполнял эти команды.
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
Когда я делаю \list
, я вижу базу данных.
Ответы
Ответ 1
Я думаю, вы пропустили создание password
для своего user
. Попробуйте создать пароль следующим образом:
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;
Ответ 2
У меня была та же проблема, и я решил, добавив "Superuser" к роли.
Сначала перечислите пользователей и их привилегии. Если вы выполнили приведенные выше команды, пользователь root не имеет атрибутов "Superuser".
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
other | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | | {}
Затем обновите root до уровня "Суперпользователь".
postgres=# ALTER USER root WITH SUPERUSER;
ALTER ROLE
Опять же, список пользователей и их привилегии. Теперь у root есть "Superuser".
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
other | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser | {}
Надеюсь, поможет.
Ответ 3
На случай, если кто-то еще придет сюда с той же проблемой, я попробовал много других решений, и наиболее подходящим для меня было следующее: Изменить OWNER для всех таблиц одновременно в PostgreSQL.
- Это работает с моим пользователя (например,
root
или postgres
) имел Superuser
привилегия таким образом пытаясь переназначить OWNED дает ошибку при попытке назначить system
объекты - ALTER DATABASE не работает, так как проблема связана с владением объектом таблицы, а не с владельцем БД. Изменение владельца в БД не распространяется на другой объект в этой схеме БД