Je suis un peu confus quant à la définition des autorisations dans PostgreSQL.
J'ai ces rôles:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
admin | Superuser, Create role, Create DB, Replication | {}
meltemi | Create role, Create DB | {rails}
rails | Create DB, Cannot login | {}
myapp | | {rails}
et bases de données:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
l'utilisateur myapp
n'a aucun problème à interroger la myapp_production
base de données en ajoutant et en supprimant des enregistrements. J'aimerais meltemi
également pouvoir interroger la même base de données. Donc, j'ai créé un rôle rails
qui possède la base de données et fait les deux meltemi
et les myapp
membres de rails
. Mais je reçois toujours des permission denied for relation
erreurs. Meltemi
peut afficher le schéma mais ne peut pas interroger la base de données.
Je viens de remarquer (avec \dt
commande) quemyapp
c'est le propriétaire des tables:
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------
public | events | table | myapp
public | schema_migrations | table | myapp
...
public | users | table | myapp
...
Les tables ont été créées via un ORM (migrations ActiveRecord de Rails).
Je sais que l'autorisation est très différente dans PostgreSQL (par opposition à MySQL et autres que j'ai utilisés). Comment dois-je configurer ma base de données pour que différents utilisateurs puissent y accéder. Certains devraient être capables de CRUD mais d'autres peuvent seulement lire, etc ...
Merci pour toute aide. Désolé, je sais que c'est une question très basique mais je n'ai pas pu trouver la réponse moi-même.
myapp
au lieu derails
ci-dessus? Parce quemyapp
possède les tables (je n'ai jamais spécifié cela, la migration doit avoir). Quoi qu'il en soit, il serait sorta logique si je renommemyapp
àmyapp_group
puis fait un nouvel utilisateurmyapp
qui les rails app utiliseraient pour se connecter à la DB. Makemyapp
et l'existantmeltemi
, les deux membres dumyapp_group
rôle. Mais que se passe-t-il lorsque j'exécute la prochaine migration. ne sera-t-il pas la propriété demyapp
recréer le problème à nouveau?!?