Ich bin etwas verwirrt über das Festlegen von Berechtigungen in PostgreSQL.
Ich habe diese Rollen:
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}
und Datenbanken:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
Benutzer myapp
hat kein Problem, die myapp_production
Datenbank abzufragen, Datensätze hinzuzufügen und zu löschen. Ich möchte meltemi
, dass auch die gleiche Datenbank abgefragt werden kann. Also habe ich eine Rolle erstellt, rails
die die Datenbank besitzt und sowohl Mitglieder meltemi
als auch myapp
Mitglieder von rails
. Aber ich bekomme immer noch permission denied for relation
Fehler. Meltemi
kann das Schema anzeigen, aber die Datenbank nicht abfragen.
Mir ist gerade aufgefallen (mit \dt
Befehl), dass myapp
der Eigentümer der Tabellen ist:
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------
public | events | table | myapp
public | schema_migrations | table | myapp
...
public | users | table | myapp
...
Die Tabellen wurden über ein ORM (Rails ActiveRecord Migrations) erstellt.
Ich weiß, dass die Autorisierung in PostgreSQL sehr unterschiedlich ist (im Gegensatz zu MySQL und anderen, die ich verwendet habe). Wie soll ich meine Datenbank einrichten, damit verschiedene Benutzer darauf zugreifen können? Einige sollten in der Lage sein, CRUD, aber andere nur in der Lage zu lesen, etc ...
Vielen Dank für jede Hilfe. Entschuldigung, ich weiß, dass dies eine sehr grundlegende Frage ist, aber ich konnte die Antwort nicht selbst finden.
myapp
anstelle vonrails
oben zu verwenden? Damyapp
gehören die Tabellen (das habe ich nie angegeben, muss die Migration haben). Auf jeden Fall wäre es sorta Sinn machen , wenn ich umbenanntmyapp
zumyapp_group
und machte dann einen neuen Benutzer ,myapp
die die App Schienen würde DB verbinden. Makemyapp
und das Vorhandenemeltemi
sind beide Mitglieder dermyapp_group
Rolle. Aber was passiert, wenn ich die nächste Migration durchführe? Wird es nicht dazu gehörenmyapp
, das Problem erneut zu erstellen?!?