Sono un po 'confuso sull'impostazione delle autorizzazioni in PostgreSQL.
Ho questi ruoli:
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}
e database:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
l'utente myapp
non ha problemi a interrogare il myapp_production
database aggiungendo ed eliminando i record. Mi piacerebbe meltemi
anche essere in grado di interrogare lo stesso database. Quindi, ho creato un ruolo rails
proprietario del database e creato sia membri meltemi
che myapp
membri rails
. Ma ricevo ancora permission denied for relation
errori. Meltemi
può visualizzare lo schema ma non può interrogare il DB.
Ho appena notato (con \dt
comando) che myapp
è il proprietario dei tavoli:
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------
public | events | table | myapp
public | schema_migrations | table | myapp
...
public | users | table | myapp
...
Le tabelle sono state create tramite un ORM (migrazioni ActiveRecord di Rails).
So che l'autorizzazione è molto diversa in PostgreSQL (al contrario di MySQL e altri che ho usato). Come devo configurare il mio database in modo che diversi utenti possano accedervi. Alcuni dovrebbero essere in grado di CRUD, ma altri potrebbero solo leggere, ecc ...
Grazie per qualsiasi aiuto. Siamo spiacenti, so che questa è una domanda molto semplice, ma non sono stato in grado di trovare la risposta da solo.
myapp
invece dirails
sopra? Perchémyapp
possiede le tabelle (non l'ho mai specificato, la migrazione deve avere). In ogni caso, sarebbe sorta senso se ho rinominatomyapp
permyapp_group
e poi ha fatto un nuovo utentemyapp
, che l'applicazione Rails avrebbe utilizzato per la connessione al DB. Makemyapp
e l'esistentemeltemi
, entrambi i membri delmyapp_group
ruolo. Ma cosa succede quando eseguo la prossima migrazione. non sarà di proprietàmyapp
ricreando nuovamente il problema?!?