J'essaie de créer la base de données dans Rails. Dans postgres, je vois la base de données de développement et de test, mais je reçois une erreur d'autorisation. J'ai essayé de suivre ce lien, ça n'a pas marché pour moi.
Erreur: PG::InsufficientPrivilege: ERROR: permission denied for relation schema_migrations : SELECT "schema_migrations".* FROM "schema_migrations"
Rails: autorisation refusée pour la relation schema_migrations
default: &default
adapter: postgresql
encoding: unicode
pool: 5
Host: localhost
username: root
password:
development:
<<: *default
database: svp-chicago_development
Je me connecte à postgres et exécute ces commandes.
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
Quand je fais \list
Je vois que la base de données est là.
Je suppose que vous avez manqué de créer password
pour votre user
. Essayez de créer un mot de passe comme suit:
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;
J'ai eu le même problème et j'ai résolu en ajoutant "Superutilisateur" au rôle.
D'abord, répertoriez les utilisateurs et leurs privilèges. Si vous avez suivi les commandes ci-dessus, l'utilisateur root n'a pas d'attributs "Superutilisateur".
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
other | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | | {}
Ensuite, mettez à niveau root pour devenir un "superutilisateur".
postgres=# ALTER USER root WITH SUPERUSER;
ALTER ROLE
Encore une fois, répertoriez les utilisateurs et leurs privilèges. Maintenant, root a "Superuser".
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
other | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser | {}
J'espère que cela aide.
Juste au cas où quelqu'un d'autre viendrait ici avec le même problème, j'ai essayé de nombreuses autres solutions et celle qui a fonctionné le mieux pour moi était la suivante: Modifier OWNER sur toutes les tables simultanément dans PostgreSQL
root
ou postgres
) avait des privilèges Superuser
donc essayer REASSIGN OWNED donne une erreur lors de la tentative d'assigner system
objets