it-swarm.com.de

psql: FATAL: Rolle "postgres" existiert nicht

Ausführen des PostgreSQL-Servers unter Void Linux. Nach der Installation wurde initdb als Betriebssystembenutzer 'postgres' ausgeführt:

[[email protected]]$ Sudo -u postgres -i

$ initdb -D '/var/lib/postgresql/data'

Empfangene Ausgabe:

verzeichnis/var/lib/postgresql/data erstellen ... ok Unterverzeichnisse erstellen ... ok Standard-max_connections auswählen ... 100 Standard-Shared-Puffer auswählen ... 128 MB dynamische Shared-Memory-Implementierung auswählen ... Posix Konfigurationsdateien erstellen ... ok running bootstrap script ... ok Durchführen der Post-Bootstrap-Initialisierung ... Gebietsschema: LC_MESSAGES kann nicht auf das Standardgebietsschema gesetzt werden: Keine solche Datei oder kein solches Verzeichnis ok Daten werden mit der Festplatte synchronisiert ... ok

WARNUNG: Aktivieren der "Vertrauens" -Authentifizierung für lokale Verbindungen Sie können dies ändern, indem Sie pg_hba.conf bearbeiten oder die Option -A oder --auth-local und --auth-Host verwenden, wenn Sie initdb das nächste Mal ausführen.

Erfolgreich. Sie können den Datenbankserver jetzt starten mit: pg_ctl -D/var/lib/postgresql/data -l Protokolldatei starten

Ich habe dann den Dienst erstellt, 'postgres' das Eigentum erteilt und ihn gestartet:

[[email protected]]$ ln -s /etc/sv/postgresql /var/service
[[email protected]]$ Sudo chown postgres: /var/service/postgresql
[[email protected]]$ Sudo sv start postgresql
[[email protected]]$ ls -l /var/service/postgresql
lrwxrwxrwx 1 postgres postgres 18 nov   2 17:05 /var/service/postgresql -> /etc/sv/postgresql

Laufen:

[[email protected]]$ Sudo -u postgres psql ...

gibt mir folgenden Fehler:

psql: FATAL:  role "postgres" does not exist

Ich habe versucht, 'postgres' das Eigentum an /etc/sv/postgresql Zu gewähren, aber kein Glück.

Dies waren meine Quellen:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQL-Fehler: Schwerwiegend: Rolle "Benutzername" existiert nicht

Ich weiß nicht, was ich als nächstes tun soll.

EDIT: Stolperte über psql: FATAL: Rolle "postgres" existiert nicht . psql -l Kann nicht ausgeführt werden, da ich den gleichen Fehler erhalte, unabhängig davon, für welchen Benutzer ich psql als ausführe.

4
Jakov

Keine vollständige Antwort, aber bedenken Sie das Handbuch über initdb hier :

-Uusername
--username=username

Wählt den Benutzernamen des Datenbank-Superusers aus. Der Standardwert ist der Name des effektiven Benutzers, der initdb ausführt. Es ist wirklich nicht wichtig, wie der Name des Superusers lautet, aber man kann den üblichen Namen postgres beibehalten, auch wenn der Name des Betriebssystembenutzers unterschiedlich ist.

Bedeutung ...

  1. Wenn Sie initdb als Betriebssystembenutzer postgres ausführen, lautet die anfängliche DB-Superuser-Rolle ebenfalls postgres - in Standard-Postgres. Ich habe von Systemen gehört, die diese Regel verbiegen ...

  2. Sie sollten in der Lage sein, force den Namen postgres mit --username=postgres für den ersten Superuser - es sei denn, Ihr Paket hat dies ernsthaft durcheinander gebracht.

4