it-swarm.com.de

PostgreSQL-Fehler: Fatal: Rolle "Benutzername" ist nicht vorhanden

Ich stelle mein PostgreSQL 9.1 ein. Ich kann nichts mit PostgreSQL machen: kann nicht createdb, kann nicht createuser; Alle Operationen geben die Fehlermeldung zurück

Fatal: role h9uest does not exist

h9uest ist mein Kontoname und ich Sudo apt-get install PostgreSQL 9.1 unter diesem Konto.
Ein ähnlicher Fehler bleibt für das Konto root bestehen.

549
h9uest

Verwenden Sie die Betriebssystembenutzerpostgres, um Ihre Datenbank zu erstellen - sofern Sie keine Datenbank -Rolle mit den erforderlichen Berechtigungen eingerichtet haben, die Ihrem Betriebssystembenutzer mit demselben Namen entspricht (h9uest in Ihrem Fall):

Sudo -u postgres -i

Wie empfohlen hier oder hier .

Dann versuche es erneut. Geben Sie exit ein, wenn Sie als Systembenutzer postgres ausgeführt wurden.

Oder führt den einzelnen Befehl createuser als postgres mit Sudo aus, wie von drees demonstriert in einer anderen Antwort.

Es geht darum, den Betriebssystembenutzer zu verwenden, der mit der Datenbankrolle desselben Namens übereinstimmt, um Zugriff über ident authentication zu erhalten. postgres ist der Standardbenutzer des Betriebssystems, der den Datenbankcluster initialisiert hat. Das Handbuch:

Um das Datenbanksystem zu booten, wird ein neu initialisierter Das System enthält immer eine vordefinierte Rolle. Diese Rolle ist immer eine "Superuser" und standardmäßig (sofern nicht geändert, wenn initdb ausgeführt wird) it hat den gleichen Namen wie der Betriebssystembenutzer, der initialisiert wurde der Datenbankcluster. Üblicherweise wird diese Rolle postgres..__ genannt. Um weitere Rollen anzulegen, müssen Sie zunächst eine Verbindung herstellen Anfangsrolle.

Ich habe von ungeraden Setups mit nicht standardmäßigen Benutzernamen gehört oder bei denen der Betriebssystembenutzer nicht vorhanden ist. Sie müssen Ihre Strategie dort anpassen.

Lesen Sie über Datenbankrollen und Client-Authentifizierung im Handbuch.

636

Nachdem ich die Lösung vieler anderer Leute ausprobiert hatte und ohne Erfolg war, half mir diese Antwort schließlich. 

https://stackoverflow.com/a/16974197/2433309

Kurz gesagt, läuft

Sudo -u postgres createuser owning_user

erstellt eine Rolle mit dem Namen owning_user (in diesem Fall h9uest). Danach können Sie rake db:create vom Terminal unter dem von Ihnen eingerichteten Kontonamen ausführen, ohne in die Postgres-Umgebung einzusteigen.

245
drees
Sudo su - postgres

psql template1

erstellen einer Rolle in pgsql mit Privileg als "Superuser"

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

Dann erstellen Sie den Benutzer 

CREATE USER username; 
eg. CREATE USER demo;

Weisen Sie dem Benutzer die Berechtigung zu

GRANT ROOT TO username;

Aktivieren Sie dann die Anmeldung dieses Benutzers, damit Sie beispielsweise psql template1 vom normalen $-Terminal aus ausführen können:

ALTER ROLE username WITH LOGIN;
107
Mohammed Saleem

Durch das Installieren von postgres mit apt-get Wird keine Benutzerrolle oder Datenbank erstellt.

So erstellen Sie eine Superuser-Rolle und eine Datenbank für Ihr persönliches Benutzerkonto:

Sudo -u postgres createuser -s $(whoami); createdb $(whoami)

77
Miles Erickson

Das funktioniert für mich:

psql -h localhost -U postgres
62

Arbeitsmethode,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peerhier ändern peer to trust
  3. neustart, Sudo service postgresql restart

  4. jetzt versuchen, psql -U postgres

Geben Sie in die Eingabeaufforderung des lokalen Benutzers und nicht in die Eingabeaufforderung des Root-Benutzers ein

Sudo -u postgres createuser <local username>

Geben Sie dann das Passwort für den lokalen Benutzer ein.

Geben Sie dann den vorherigen Befehl ein, bei dem die Rolle "Benutzername" nicht vorhanden ist. "

Die oben genannten Schritte haben das Problem für mich gelöst. Falls nicht, senden Sie bitte Terminalmeldungen für die oben genannten Schritte.

5
Robert Cambil

Ich habe es auf macOS installiert und musste:

cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME

Hier die Quelle: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641

5
Henry

Für Version Postgres 9.5 verwende folgendes Kommando:

psql -h localhost -U postgres

Hoffe das wird helfen.

2

Das manuelle Erstellen eines DB-Clusters hat es in meinem Fall gelöst.

Aus irgendeinem Grund wurde bei der Installation von Postgres die "anfängliche Datenbank" nicht erstellt. Das Ausführen von initdb hat den Trick für mich gemacht.

Diese Lösung wird in dem PostgreSQL-Wiki - Erste Schritte bereitgestellt:

initdb

Wenn Sie Postgres normalerweise in Ihrem Betriebssystem installieren, wird eine "Anfangs-DB" erstellt und der Postgres-Server-Daemon gestartet. Wenn nicht, müssen Sie initdb ausführen

1
Natacha

Folgen Sie diesen Schritten und es funktioniert für Sie:

  1. msfconsole ausführen
  2. geben Sie db_console ein 
  3. ihnen werden einige Informationen angezeigt. Wählen Sie die Informationen aus, die Sie angeben sollen: db_connect user:[email protected]:port.../database Entschuldigung, ich erinnere mich nicht, aber es ist so, als würden Sie den Benutzer und das Kennwort sowie den Host und die Datenbank durch die in database.yml enthaltenen Informationen ersetzen die Stellung: /usr/share/metasploit-framework/config 
  4. du wirst sehen. Neuerstellen des Modellcaches im Hintergrund. 
  5. Geben Sie apt-get update && apt-get upgrade ein. Nach dem Update starten Sie das Terminal und msfconsole neu. Es funktioniert. Sie können dies überprüfen, indem Sie in msfconsole: msf>db_status eingeben, dass die Verbindung hergestellt wird.
1
Loli Pronoms

dump und Restore mit --no-owner --no-privileges Flags

z.B.

dump - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:[email protected]:5432/schemaname > /tmp/full.dump

wiederherstellen - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:[email protected]:5432/schemaname /tmp/full.dump

0
srghma

Für Windows Benutzer: psql -U postgres

Sie sollten dann die Befehlszeilenschnittstelle für PostgreSQL sehen: postgres=#

0
Andriy Tolstoy
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;
0
Abel