Ich versuche zum ersten Mal, Postgres einzurichten, und ich muss einen Benutzer mit Berechtigungen zum Lesen und Erstellen von Datenbanken erstellen. Wenn ich jedoch benutze:
createuser username
In meinem Terminal wird folgende Meldung angezeigt:
createuser: konnte keine Verbindung zur Datenbank herstellen postgres: FATAL: Rolle "tom" existiert nicht
Tom ist mein Ubuntu-Benutzerkonto, bei dem ich gerade angemeldet bin. Ich versuche, einen Benutzernamen für "postgres" zu erstellen, und mache dann einen, psql -U psql template1
damit ich eine Datenbank erstellen und ihr einen Eigentümer für meine Rails-App zuweisen kann.
database
postgresql
Tom Maxwell
quelle
quelle
Antworten:
Sie haben Ubuntu erwähnt, also werden Sie wahrscheinlich die PostgreSQL-Pakete von Ubuntu über apt installiert haben.
In diesem
postgres
Fall ist das PostgreSQL-Benutzerkonto bereits vorhanden und so konfiguriert, dass über diepeer
Authentifizierung für Unix-Sockets in zugegriffen werden kannpg_hba.conf
. Sie erreichen dies, indem Sie Befehle alspostgres
Unix-Benutzer ausführen , z.Dies alles ist in der Ubuntu PostgreSQL- Dokumentation enthalten, die der erste Google-Hit für "Ubuntu PostgreSQL" ist und in zahlreichen Fragen zum Stapelüberlauf behandelt wird.
(Sie haben die Beantwortung dieser Frage erheblich erschwert, indem Sie Details wie das Betriebssystem und die Version, auf der Sie sich befinden, wie Sie PostgreSQL installiert haben usw. weggelassen haben.)
quelle
pg_hba.conf
, um diemd5
Authentifizierung für diesen Benutzer zu verwenden (siehe Handbuch). (b) Erstellen Sie einen Betriebssystembenutzer mit demselben Namen und verwenden Sie weiterhinpeer
auth. oder (c) fortgeschrittener erstellen Sie einepg_ident.conf
Zuordnung, damit sich Ihr Betriebssystembenutzer als neuer Benutzer anmelden kann.Siehe git gist mit Anweisungen hier
Führen Sie Folgendes aus:
ODER
in Ihrem Terminal, um in Postgres zu gelangen
Lauf
Hinweis: Ersetzen Sie new_username durch den Benutzer, den Sie erstellen möchten. In Ihrem Fall ist dies tom.
Da dieser Benutzer eine Datenbank erstellen kann, müssen Sie die Rolle in Superuser ändern
Zur Bestätigung war alles erfolgreich,
Update / Änderung (für Mac):
Ich habe kürzlich einen ähnlichen Fehler auf meinem Mac festgestellt:
psql: FATAL: role "postgres" does not exist
Dies lag daran, dass meine Installation mit einem Datenbank-Superuser eingerichtet wurde, dessen Rollenname mit Ihrem Anmeldenamen (Kurzname) übereinstimmt.
Einige Linux-Skripte gehen jedoch davon aus, dass der Superuser den traditionellen Rollennamen hat
postgres
Wie habe ich das gelöst?
Wenn Sie mit
homebrew
run installiert haben :/usr/local/opt/postgres/bin/createuser -s postgres
/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres
ODER:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username
ODER:
/usr/local/opt/postgresql@11/bin/createuser -s postgres
/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres
PS: Ersetzen Sie 10.5 durch Ihre PostgreSQL-Version
quelle
psql -U postgres
Dies sollte Ihnen helfen, da dies passieren wird, wenn der Administrator kein PostgreSQL-Benutzerkonto für Sie erstellt hat. Es kann auch sein, dass Ihnen ein PostgreSQL-Benutzername zugewiesen wurde, der sich von Ihrem Betriebssystembenutzernamen unterscheidet. In diesem Fall müssen Sie den Schalter -U verwenden.
quelle
1- Melden Sie sich als Standard-PostgreSQL-Benutzer an (postgres)
2- Als Postgres-Benutzer. Fügen Sie mit dem
createuser
Befehl einen neuen Datenbankbenutzer hinzu3-Ausgang
quelle
Ihr Fehler wird in der offiziellen Dokumentation veröffentlicht. Sie können diesen Artikel lesen .
Ich habe den Grund für Sie aus diesem Artikel kopiert (und die URLs verlinkt):
Für Ihre Zwecke können Sie Folgendes tun:
1) Erstellen Sie ein PostgreSQL-Benutzerkonto:
(Die
-P
Option zum Festlegen eines Kennworts; Die-d
Option zum Erstellen einer Datenbank für Ihren Benutzernamen 'tom'. Beachten Sie, dass 'tom' der Benutzername Ihres Betriebssystems ist. Auf diese Weise können Sie PostgreSQL-Befehle ausführen, ohnesudo
ing.)2) Jetzt sollten Sie in der Lage sein,
createdb
andere PostgreSQL-Befehle auszuführen.quelle
Ich hatte das gleiche Problem, ich mache das einfach
sudo su - postgres
createuser odoo -U postgres -dRSP #P für Passwort ( odoo oder Benutzername , den Sie möchten, um dem postgres Zugriff zu gewähren)
quelle
Unter Windows verwenden:
C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>
Hinzufügen
--superuser
oder--createdb
nach Bedarf.Weitere Optionen finden Sie unter https://www.postgresql.org/docs/current/static/app-createuser.html .
quelle
Sie müssen zuerst initdb ausführen. Es wird der Datenbankcluster und die Ersteinrichtung erstellt
Siehe So konfigurieren Sie postgresql zum ersten Mal. und http://www.postgresql.org/docs/8.4/static/app-initdb.html
quelle
initdb
wäre, würde kein Datenbankserver ausgeführt und Verbindungen akzeptiert, um die gemeldete Fehlermeldung zu erzeugen. Bitte entfernen Sie diese irreführende Antwort. (Übrigens, in Zukunft bitte auf / docs / current / static / verlinken, um zu verhindern, dass sich veraltete Links ansammeln)