Estoy un poco confundido sobre la configuración de permisos en PostgreSQL.
Tengo estos roles:
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}
y bases de datos:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
el usuario myappno tiene problemas para consultar la myapp_productionbase de datos agregando y eliminando registros. También me gustaría meltemipoder consultar la misma base de datos. Por lo tanto, he creado un papel railsque posee la base de datos y de hecho tanto meltemiy myappmiembros de rails. Pero sigo teniendo permission denied for relationerrores. Meltemipuede ver el esquema pero no puede consultar la base de datos.
Acabo de notar (con \dtcomando) que myappes el propietario de las tablas:
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------
public | events | table | myapp
public | schema_migrations | table | myapp
...
public | users | table | myapp
...
Las tablas se crearon a través de un ORM (migraciones ActiveRecord de Rails).
Sé que la autorización es muy diferente en PostgreSQL (a diferencia de MySQL y otros que he usado). ¿Cómo debo configurar mi base de datos para que diferentes usuarios puedan acceder a ella? Algunos deberían poder CRUDAR, pero otros solo podrían leer, etc.
Gracias por cualquier ayuda. Lo siento, sé que esta es una pregunta muy básica, pero no he podido encontrar la respuesta yo mismo.
myapplugar de lorailsanterior? Porquemyappposee las tablas (nunca especifiqué eso, la migración debe tener). De todos modos, sería sortA sentido si Retitulémyappamyapp_groupy luego hice un nuevo usuariomyapp, que los rieles de aplicación sería utilizar para conectarse a DB. Makemyappy el existentemeltemi, ambos miembros delmyapp_grouprol. Pero, ¿qué sucede cuando ejecuto la próxima migración? ¿No será propiedad demyappvolver a crear el problema nuevamente?