Ich kann psql
mit meinem normalen Mac-Benutzerkonto in der Terminalsitzung nicht ausgeführt werden, obwohl ich das über das postgres
Dienstkonto tun kann . Wenn ich den Befehl eingebe psql mydb
und mein Passwort eingebe, wird folgende Meldung angezeigt:
WARNING: password file "/Users/beh/.pgpass" has group or world access; permissions should be u=rw (0600) or less
Aber ich kann nicht finden .pgpass
.
Wie richte ich Benutzer für meine PostgreSQL 9.1-Datenbank unter Mac OS X 10.6.8 ein und füge sie hinzu?
Antworten:
Die Datei
.pgpass
beginnt mit einem Punkt und ist daher in den meisten Dateimanagern standardmäßig ausgeblendet. Sie sollten jedoch über Terminal darauf zugreifen können. Sie brauchen die.pgpass
Datei wahrscheinlich nicht , daher ist es möglicherweise eine gute Idee, sie zu löschen. Wenn Sie es behalten möchten, bearbeiten Sie die Kennwortdatei gemäß der Dokumentation und führen Sie sie auschmod 0600 ~/.pgpass
, um die Berechtigungen zu korrigieren.PostgreSQL-Benutzerkonten sind unabhängig vom Betriebssystem. Beachten Sie jedoch, dass
psql
der Systembenutzername des aktuellen Benutzers , sofern er nicht in der Befehlszeile angegeben ist, sowohl als Datenbankname als auch als PostgreSQL-Benutzername verwendet wird. Ein Fehler tritt auf, wenn im Datenbankcluster keine Datenbank oder kein Benutzer mit diesem Namen vorhanden ist. Um Benutzer hinzuzufügen, führen Sie siepsql
alspostgres
Benutzer aus und verwenden Sie dann die SQL-BefehleCREATE ROLE
oderCREATE USER
. Sofern die Benutzer keine Verbindung zu derselben Datenbank herstellen, möchten Sie möglicherweise Datenbanken für jeden Benutzer erstellen, um Fehler zu vermeiden.quelle
postgres
Benutzer mit demuserdel
Befehl (oder einem gleichwertigen Befehl, falls auf Ihrem System nicht verfügbar) auf dem Terminal. Löschen Sie dann den Datenbankcluster (der/usr/local/var/postgres
standardmäßig in gespeichert ist ) und installieren Sie PostgreSQL neu (wodurch daspostgres
Konto automatisch neu erstellt wird ). Wenn der Datenbankcluster nicht automatisch neu erstellt wird, tun Sie dies an derselben Stelle, an der er mit dem Befehl initdb gelöscht wurde .