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 myapphat kein Problem, die myapp_productionDatenbank 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, railsdie die Datenbank besitzt und sowohl Mitglieder meltemials auch myappMitglieder von rails. Aber ich bekomme immer noch permission denied for relationFehler. Meltemikann das Schema anzeigen, aber die Datenbank nicht abfragen.
Mir ist gerade aufgefallen (mit \dtBefehl), dass myappder 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.
myappanstelle vonrailsoben zu verwenden? Damyappgehören die Tabellen (das habe ich nie angegeben, muss die Migration haben). Auf jeden Fall wäre es sorta Sinn machen , wenn ich umbenanntmyappzumyapp_groupund machte dann einen neuen Benutzer ,myappdie die App Schienen würde DB verbinden. Makemyappund das Vorhandenemeltemisind beide Mitglieder dermyapp_groupRolle. Aber was passiert, wenn ich die nächste Migration durchführe? Wird es nicht dazu gehörenmyapp, das Problem erneut zu erstellen?!?