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 myappnon ha problemi a interrogare il myapp_productiondatabase aggiungendo ed eliminando i record. Mi piacerebbe meltemianche essere in grado di interrogare lo stesso database. Quindi, ho creato un ruolo railsproprietario del database e creato sia membri meltemiche myappmembri rails. Ma ricevo ancora permission denied for relationerrori. Meltemipuò visualizzare lo schema ma non può interrogare il DB.
Ho appena notato (con \dtcomando) 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.
myappinvece dirailssopra? Perchémyapppossiede le tabelle (non l'ho mai specificato, la migrazione deve avere). In ogni caso, sarebbe sorta senso se ho rinominatomyapppermyapp_groupe poi ha fatto un nuovo utentemyapp, che l'applicazione Rails avrebbe utilizzato per la connessione al DB. Makemyappe l'esistentemeltemi, entrambi i membri delmyapp_groupruolo. Ma cosa succede quando eseguo la prossima migrazione. non sarà di proprietàmyappricreando nuovamente il problema?!?