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.
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 Rollepostgres
..__ 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.
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.
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;
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)
Das funktioniert für mich:
psql -h localhost -U postgres
Arbeitsmethode,
vi /etc/postgresql/9.3/main/pg_hba.conf
local all postgres peer
hier ändern peer to trust neustart, Sudo service postgresql restart
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.
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
Für Version Postgres 9.5 verwende folgendes Kommando:
psql -h localhost -U postgres
Hoffe das wird helfen.
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
Folgen Sie diesen Schritten und es funktioniert für Sie:
msfconsole
ausführendb_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
msfconsole: msf>db_status
eingeben, dass die Verbindung hergestellt wird.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
Für Windows Benutzer: psql -U postgres
Sie sollten dann die Befehlszeilenschnittstelle für PostgreSQL sehen: postgres=#
psql postgres
postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;