Postgres-Benutzer existiert nicht?


90

Ich habe gerade Postgres installiert und habe 1-2 Stunden lang daran und an verschiedenen Konfigurationen herumgebastelt.

Ich bin fest davon überzeugt, dass ich nicht zum Postgres-Benutzer wechseln kann

$ su - postgres ergibt folgenden Fehler: su: unknown login: postgres

$ sudo -u postgres psql ergibt folgenden Fehler: sudo: unknown user: postgres

Diese Versuche werden als normaler Benutzer durchgeführt. Wenn Sie sie als Root versuchen, erhalten Sie genau die gleichen Ergebnisse. Ich habe Postgres über Homebrew unter OS X installiert und die Anweisungen mehrmals gelesen.


Versuchen Sie nur, psql auszuführen?
DanielM

Nun ja, ich möchte als der richtige postgresBenutzer laufen .
Krystah

Unter einigen Mac OS X-Varianten mit einigen Installationsmethoden wird der Benutzer meiner Meinung nach postgres_stattdessen so erstellt. Beachten Sie den nachfolgenden Unterstrich. Sind Sie auch sicher, dass Sie (oder das Installationsprogramm) die PostgreSQL-Instanz tatsächlich erstellt und die Datenbank gestartet haben?
Craig Ringer

1
Ich konnte zu nicht zum postgresBenutzer wechseln . Das Problem wurde nach der Installation des postgresql-serverPakets behoben .
Sergio

Antworten:


90

psql: Meldet mich mit meinem Standardbenutzernamen an

psql -U postgres: Meldet mich als Postgres-Benutzer an

Sudo scheint für mich nicht erforderlich zu sein.

Ich verwende Postgres.app für meine OS X-Postgres-Datenbank. Es hat die Kopfschmerzen beseitigt, sicherzustellen, dass die Installation funktioniert und der Datenbankserver ordnungsgemäß gestartet wurde. Überprüfen Sie es hier: http://postgresapp.com

Bearbeiten: Dank an @Erwin Brandstetter für die Korrektur meiner Verwendung der Argumente.


8
Ich habe mit Brew installiert und es wurde kein Benutzer namens postgres oder _postgres erstellt (soweit ich sehen kann), daher ist dies für mich fehlgeschlagen. Die @ kangkyu-Lösung erklärt und führt Sie durch die Probleme - vorausgesetzt, Sie haben dann keinen Postgres-Benutzer: psql postgresund psql -d postgres.
Notapatch

21

Durch die psql --help, wenn Sie Optionen für den Datenbanknamen nicht festgelegt haben (ohne -dOption) wäre es Ihr Benutzername sein, wenn Sie nicht tun-U , würden die Datenbank - Benutzername Ihre Benutzername sein, usw.

Mit initdbdem Befehl (um die erste Datenbank zu erstellen) wird Ihr Benutzername jedoch nicht als Datenbankname angegeben. Es hat eine Datenbank mit dem Namen postgres. Die erste Datenbank wird immer mit dem Befehl initdb erstellt, wenn der Datenspeicherbereich initialisiert wird. Diese Datenbank heißt postgres.

Wenn Sie also keine andere Datenbank mit Ihrem Benutzernamen haben, müssen Sie dies tun, psql -d postgresdamit der Befehl psql funktioniert. Und es scheint, dass es -dstandardmäßig eine Option gibt ,psql postgres funktioniert auch.

Wenn Sie andere Datenbanknamen erstellt haben, die mit Ihrem Benutzernamen identisch sind (dies sollte erledigt sein createdb), können Sie psqlnur Befehle erteilen. Und es scheint, dass der erste Datenbankbenutzername durch Brauen als Benutzername Ihres Computers festgelegt wird.

psql -d <first database name> -U <first database user name>

oder,

psql -d postgres -U <your machine username>
psql -d postgres

würde standardmäßig funktionieren.


18

OS X neigt dazu, den Systemkontonamen "_" voranzustellen. Sie sagen nicht, welche Version von OS X Sie verwenden, aber zumindest in 10.8 und 10.9 ist der Benutzer _postgres in einer Standardinstallation vorhanden. Beachten Sie, dass Sie sudieses Konto nicht verwenden können (außer als Root), da es kein Kennwort hat. sudo -u _postgressollte andererseits gut funktionieren.


Vielen Dank! Dies ist die Antwort, nach der ich gesucht habe. Kann ich irgendetwas tun, um den Benutzer in "postgres" umzubenennen? Wenn Sie sich als _postgres-Benutzer anmelden, beschwert sich psql, dass der Benutzer "_postgres" nicht vorhanden ist. Ich versuche, eine saubere Postgres-Instanz mit einer Sicherungsdatei aus einer anderen Datenbank wiederherzustellen
Chris Reyes - he-him

1
@ChrisReyes Das Ändern des Namens von Systemkonten kann dazu führen, dass Systemkomponenten, die sie verwenden, beschädigt werden. Ich würde daher dringend davon abraten. Sie könnten ein anderes Benutzerkonto mit dem Namen "postgres" erstellen und dieses verwenden. Wenn ich jedoch richtig verstehe (was ich möglicherweise nicht verstehe), stoßen Sie darauf, dass das Benutzerkonto in der postgres-Datenbank nicht _postgres heißt. AIUI Die Kontonamen in der Datenbank sind von den Systemkontonamen getrennt. Daher sollte es kein Problem geben, eine DB-Instanz unter dem Systemkonto "_postgres" auszuführen und diese Datenbank mit dem Datenbankkonto "postgres" zu öffnen.
Gordon Davisson


3
psql -U postgres

Funktionierte gut für mich im Fall von Datenbankname: postgres & Benutzername: postgres. Sie müssen also kein Sudo schreiben.

Und im Fall einer anderen Datenbank können Sie es versuchen

psql -U yourdb postgres

Wie in der Postgres-Hilfe angegeben:

psql [OPTION]... [DBNAME [USERNAME]]

Mein Fall: $ psql -U postgresErzeugt eine Ausgabe psql: FATAL: role "postgres" does not exist, psql postgresfunktioniert aber .
Frozen Flame

3

Ich bekomme genau die gleichen Fehler wie kryshah mit su - postgresund sudo -u postgres psql. Die Antwort von DanielM gibt auch Fehler.

Gibt bei falschen Einstellungen aus

Antworte jedoch aus przbabus Kommentar.

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

Ich denke, der Teil dieses Problems liegt möglicherweise in den Eigentümereinstellungen in OSX

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

aber tun sudo chown -R postgres:staff /Users/postgresgibt chown: invalid user: ‘postgres:staff’.

Kurz gesagt, dies ist nicht die Lösung des Problems. Verwenden Sie die von der Postgres-Installation bereitgestellten Tools, um einen Benutzer und eine Datenbank zu erstellen.

Um die richtigen Einstellungen und Ausgaben zu erhalten

Nach der Postgres-Installation gibt es bestimmte Befehle, um dem Datenbanksystem einen neuen Benutzer hinzuzufügen. Führen Sie nach initdb Folgendes aus, wie hier beschrieben

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

Um die Kennwortanforderung ständig zu vermeiden, haben Sie drei Möglichkeiten, wie hier beschrieben .


1

Für mich war dies die Lösung unter macOS. Installieren Sie die psql neu

brew install postgres

Starten Sie den PostgreSQL-Server

pg_ctl -D /usr/local/var/postgres start

DB initialisieren

initdb /usr/local/var/postgres

Wenn dieser Befehl einen Fehler auslöst, rm die alte Datenbankdatei und führen Sie den obigen Befehl erneut aus

rm -r /usr/local/var/postgres

Erstellen Sie eine neue Datenbank

createdb postgres_test
psql -W postegres_test

Sie werden in dieser Datenbank angemeldet und können hier einen Benutzer zum Anmelden erstellen


0

Die Lösung ist einfach:
Melden Sie sich als root an
und danach:

su - postgres

psql
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.