[PostgreSQL 15]Droits d'écriture sur le schéma public
Bonsoir,
Je suis confronté à un petit souci avec PostgreSQL. Lorsqu'on lance les migrations, Django signale l'erreur :
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" bigint NOT NULL PRIMA...
Voici l'explication que j'ai trouvé sur un article qui liste les nouveautés de PostgreSQL 15 :
Cette nouvelle version supprime le privilège par défaut CREATE sur le schéma public pour le rôle PUBLIC. Pour rappel, PUBLIC peut être vu comme un rôle implicitement défini qui inclut en permanence tous les rôles. Le propriétaire par défaut du schéma public n’est plus postgres mais le rôle pg_database_owner. Ce mécanisme permet au propriétaire de la base de données d’obtenir implicitement le droit CREATE sur le schéma public.
Sur stackoverflow j'ai vu qu'en attribuant l'utilisateur en tant que propriétaire de la base de données, ça autorise bien l'écriture de nouvelles tables dans public.
Voici un exemple d'utilisation de la commande :
ALTER DATABASE blog_db OWNER TO blog_admin;
Cette solution fonctionne mais j'aimerai bien avoir votre avis, si c'est la bonne manière de pallier ce problème ?
Thanks ;)
P.S. Apparemment l'utilisation de 'Quote' ne fonctionne pas.
Salut Cam !
Effectivement en faisant quelques recherches de mon côté j'ai vu la même chose par rapport au changement sur PostgreSQL 15.
De mon côté j'ai l'habitude de donner tous les droits à l'utilisateur qui gère ma base de données, comme je le montre dans cette vidéo.
Du coup je n'avais pas eu le problème en passant à Postgres 15 je pense.
Est-ce que changer le propriétaire de la base de données est la meilleure solution, j'ai envie de dire que c'est toujours mieux d'avoir de toute façon un utilisateur bien défini pour ta base de données, et ensuite potentiellement de modifier les droits (tu pourrais faire différemment de ce que je montre dans la vidéo dans laquelle je donne tous les droits à l'utilisateur, pour n'en limiter que quelques-uns en fonction de ce que tu souhaites faire).
À ce niveau là ça va dépendre de l'infrastructure, des permissions (et donc des personnes qui travaillent sur le projet, des droits que tu souhaites accorder, etc, comme dans n'importe quel projet avec des utilisateurs et des permissions).
J'espère que ça réponds à ta question :)
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte