pgadmin: erste "DETAIL: Benutzer nicht über die CONNECT-Berechtigung". Fehler
Bin ich mit pgAdmin III auf Mac Yosemite. Ich habe eine Rolle angelegt, "Rabatt", und erstellt eine Datenbank "Rabatt". Im pgadmin-tool, wie gebe ich dem Benutzer "Rabatt" connect-Privilegien (und die Tabelle Lesen/schreiben-Berechtigungen) in der Datenbank "Rabatt"? Derzeit, wenn ich versuche, login-Befehl an einer Eingabeaufforderung bekomme ich diese Fehler
davea$ psql -h localhost -d discount -U discount
Password for user discount:
psql: FATAL: permission denied for database "discount"
DETAIL: User does not have CONNECT privilege.
- Sie können verwenden Sie GRANT-Befehl zu geben, Berechtigungen hier ist ein offizielles Dokument
- Dieser link hat nichts zu tun mit dem pgadmin-tool
- Die Frage hat nichts zu tun mit pgAdmin III entweder, denke ich. Können Sie Problem der fehlenden
GRANT
- Anweisung mit pgAdmin III, wenn Sie mögen. - Dein problem ist nicht sieht aus wie mit dem pgadmin aber das mit den Berechtigungen und so habe ich Ihnen den Weg, wie Sie erteilen der richtigen Berechtigungen für den Benutzer, damit die Benutzer über die Berechtigung zum Zugriff auf die Datenbank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erlaubnis zur aktuellen Objekte
Lese - /Schreibzugriff auf die Tabellen, die Sie verwenden müssen
GRANT
- Befehl in 3 Stufen:Zuerst müssen Sie
CONNECT
- Rechte auf der Datenbank:Zweitens müssen Sie
USAGE
Privileg für das schema innerhalb der Datenbank (Sie müssen eine Verbindung zu der Datenbank vor der Ausführung):Endlich können Sie die Berechtigungen auf die Tabellen, angenommen, Sie möchten gemeinsame DML und WÄHLEN Sie auf alle Tabellen im schema, und die anderen Berechtigungen:
Standard-Berechtigung für Objekte, die in Zukunft erstellt
Müssen Sie jetzt etwas aufgefallen. Jede Datenbank und jedes schema, und jedes Objekt (Tabelle, Funktion, etc.) einen Besitzer haben. Der Besitzer ist der Benutzer, verwalten und ausführen von DDL-Befehle. In der Regel führen Sie alle oben genannten Befehle, während verbunden, wie die user, die alles gehört, weil dieser Benutzer hat bereits alle Berechtigungen (man könnte ein
SUPERUSER
auch, aber ich empfehlen, es nur für DBA-Aufgaben).Den oben
GRANT ... ON ALL ... IN SCHEMA
Befehle geben Sie Berechtigungen für die Objekte bereits in der Datenbank vorhanden, aber nicht für neue Objekte erstellt. Um dies zu tun, können SieALTER STANDARD-PRIVILEGIEN
(ich nenne esADP
) - Befehl. Wie zuvor, sollten Sie ausführen, dass, während eine Verbindung als Besitzer, denn Sie müssen im Hinterkopf behalten, dass die ADP wird nur angewendet, wenn die Eigentümer der neuen Sache entspricht, mit der eine hier (oder inFÜR ROLLE
- Klausel):Können Sie auch überspringen
IN SCHEMA <schemaname>
von oben und es galt für jedes schema, das Sie haben oder in der Zukunft schaffen. Aber wieder vorsichtig sein, auch wenn Sie nichtFOR ROLE <rolename>
das heißt, es gelten für die aktuellen Benutzer verbunden, so werden nur Objekte erzeugt, die im Besitz dieses<rolename>
betrachten die ADP-Befehl.Für eine gute Verwaltung von Berechtigungen, ich empfehle Ihnen, halten Sie ein Auge auf die Benutzer der Eigentümer der Objekte. In den meisten Fällen empfehle ich auch, Sie halten nur einen Besitzer für alles, was innerhalb der Datenbank (es sei denn, Sie sind ein Fortgeschrittener Benutzer sind und wissen, was Sie tun), so permission management ist einfacher.