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 myapp
no tiene problemas para consultar la myapp_production
base de datos agregando y eliminando registros. También me gustaría meltemi
poder consultar la misma base de datos. Por lo tanto, he creado un papel rails
que posee la base de datos y de hecho tanto meltemi
y myapp
miembros de rails
. Pero sigo teniendo permission denied for relation
errores. Meltemi
puede ver el esquema pero no puede consultar la base de datos.
Acabo de notar (con \dt
comando) que myapp
es 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.
myapp
lugar de lorails
anterior? Porquemyapp
posee las tablas (nunca especifiqué eso, la migración debe tener). De todos modos, sería sortA sentido si Retitulémyapp
amyapp_group
y luego hice un nuevo usuariomyapp
, que los rieles de aplicación sería utilizar para conectarse a DB. Makemyapp
y el existentemeltemi
, ambos miembros delmyapp_group
rol. Pero, ¿qué sucede cuando ejecuto la próxima migración? ¿No será propiedad demyapp
volver a crear el problema nuevamente?