Я немного запутался в настройке разрешений в PostgreSQL.
У меня есть эти роли:
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}
и базы данных:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
У пользователя myapp
нет проблем с запросом к myapp_production
базе данных, добавлением и удалением записей. Я хотел бы meltemi
также иметь возможность запрашивать ту же базу данных. Итак, я создал роль, rails
которая владеет базой данных и сделал meltemi
и myapp
членов и членов rails
. Но я все еще получаю permission denied for relation
ошибки. Meltemi
может просматривать схему, но не может запрашивать БД.
Я только что заметил (с помощью \dt
команды), что myapp
является владельцем таблиц:
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------
public | events | table | myapp
public | schema_migrations | table | myapp
...
public | users | table | myapp
...
Таблицы были созданы с помощью ORM (миграции ActiveRecord от Rails).
Я знаю, что авторизация в PostgreSQL сильно отличается (в отличие от MySQL и других, которые я использовал). Как мне настроить свою базу данных, чтобы разные пользователи могли получить к ней доступ? Некоторые должны быть в состоянии CRUD, но другие могут только читать, и т.д ...
Спасибо за любую помощь. Извините, я знаю, что это очень простой вопрос, но я не смог найти ответ сам.
myapp
вместоrails
выше? Потому чтоmyapp
владеет таблицами (я никогда не указывал, что миграция должна иметь). Во всяком случае, было бы Сорта иметь смысл , если я переименовалmyapp
в ,myapp_group
а затем сделал новый пользователь ,myapp
который рельсы приложения будет использовать для подключения к БД. Сделайтеmyapp
и существующиеmeltemi
, оба участникиmyapp_group
роли. Но что происходит, когда я запускаю следующую миграцию. не будет ли оно принадлежатьmyapp
воссозданию проблемы заново?!?