webentwicklung-frage-antwort-db.com.de

Createuser: konnte keine Verbindung zu Datenbankpostgres herstellen: FATAL: Rolle "Tom" ist nicht vorhanden

Ich versuche, Postgres zum ersten Mal einzurichten, und ich muss einen Benutzer mit Berechtigungen zum Lesen und Erstellen von Datenbanken erstellen. Wenn ich jedoch "createuser username" in meinem Terminal verwende, erhalte ich die folgende Meldung: 

createuser: konnte keine Verbindung zu Datenbank-Postgres herstellen: FATAL: Rolle "tom" ist nicht vorhanden

Tom ist mein Ubuntu-Benutzerkonto, bei dem ich gerade angemeldet bin. Ich versuche, einen Benutzernamen für "postgres" zu erstellen und dann ein "psql -U psql template1" zu erstellen, damit ich eine Datenbank erstellen und dieser meiner Rails-App einen Besitzer zuweisen kann. 

Irgendeine Hilfe?

63
Tom Maxwell

Sie haben Ubuntu erwähnt, also denke ich, Sie haben die PostgreSQL-Pakete von Ubuntu über apt installiert.

Wenn ja, ist das PostgreSQL-Benutzerkonto postgres bereits vorhanden und ist so konfiguriert, dass es über peer-Authentifizierung für Unix-Sockets in pg_hba.conf erreichbar ist. Sie erreichen es, indem Sie Befehle als postgres unix-Benutzer ausführen, z.

Sudo -u postgres createuser owning_user
Sudo -u postgres createdb -O owning_user dbname

Dies ist alles in der Ubuntu PostgreSQL Dokumentation, die der erste Google-Hit für "Ubuntu PostgreSQL" ist und in zahlreichen Fragen zum Stack-Overflow behandelt wird.

(Sie haben es viel schwieriger gemacht, diese Frage zu beantworten, indem Sie Details wie das Betriebssystem und die Version, auf der Sie sich befinden, wie Sie PostgreSQL installiert haben, weglassen.)

106
Craig Ringer

Siehe git Gist mit Anweisungen hier

Führen Sie das aus: 

 Sudo -u postgres psql

OR

psql -U postgres

in Ihrem Terminal in Postgres zu bekommen

postgres=#

Lauf 

CREATE USER new_username;

Hinweis: Ersetzen Sie new_username durch den Benutzer, den Sie erstellen möchten. In Ihrem Fall wird dies tom sein.

postgres=# CREATE USER new_username;
CREATE ROLE

Da Sie möchten, dass dieser Benutzer eine Datenbank erstellen kann, müssen Sie die Rolle in Superuser ändern

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

Um zu bestätigen, war alles erfolgreich, 

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 

Update/Änderung:

Ich habe kürzlich einen ähnlichen Fehler auf meinem Mac festgestellt: 

psql: FATAL: role "postgres" does not exist

Dies liegt daran, dass meine Installation mit einem Datenbank-Superuser eingerichtet wurde, dessen Rollenname mit Ihrem Anmeldenamen (Kurznamen) übereinstimmt.

Bei einigen Linux-Skripts wird jedoch davon ausgegangen, dass der Superuser den traditionellen Rollennamen postgres hat.

Wie habe ich das gelöst?

Wenn Sie mit homebrew installiert haben, führen Sie Folgendes aus:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

ODER: 

/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

Wenn Sie mit postgres.app für Mac installiert haben, führen Sie Folgendes aus:

/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres

P.S: Ersetzen Sie 10.5 durch Ihre PostgreSQL-Version

36
user3402754
Sudo -u postgres createuser -s tom 

dies sollte Ihnen helfen, da dies der Fall ist, 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 die Option -U verwenden.

25
Tanmay

Ihr Fehler ist in der offiziellen Dokumentation vermerkt. Sie können diesen Artikel lesen .

Ich habe den Grund für Sie aus diesem Artikel kopiert (und die URLs verlinkt):

Dies geschieht, wenn der Administrator kein PostgreSQL-Benutzerkonto für Sie erstellt hat. (PostgreSQL-Benutzerkonten unterscheiden sich von Betriebssystem-Benutzerkonten.) Wenn Sie Administrator sind, finden Sie unter Kapitel 20 Hilfe bei der Kontoerstellung. Sie müssen der Betriebssystembenutzer werden, unter dem PostgreSQL installiert wurde (normalerweise postgres), um das erste Benutzerkonto zu erstellen. Es kann auch sein, dass Ihnen ein PostgreSQL-Benutzername zugewiesen wurde, der sich von Ihrem Betriebssystembenutzernamen unterscheidet. In diesem Fall müssen Sie die Option -U verwenden oder die PGUSER-Umgebungsvariable festlegen, um Ihren PostgreSQL-Benutzernamen anzugeben

Für Ihre Zwecke können Sie Folgendes tun:

1) Erstellen Sie ein PostgreSQL-Benutzerkonto:

Sudo -u postgres createuser tom -d -P

(Mit der Option -P können Sie ein Kennwort festlegen. Mit der Option -d können Sie die Datenbank für Ihren Benutzernamen "tom" erstellen. Beachten Sie, dass "tom" der Benutzername Ihres Betriebssystems ist. Auf diese Weise können Sie PostgreSQL-Befehle ohne Sudoing ausführen.)

2) Jetzt sollten Sie in der Lage sein, createdb und andere PostgreSQL-Befehle auszuführen.

5
Rocky Inde

1- Als Standard PostgreSQL-Benutzer anmelden (Postgres)

Sudo -u postgres -i

2- Als Postgres-Benutzer. Fügen Sie einen neuen Datenbankbenutzer mit dem Befehl createuser hinzu

[postgres]$ createuser --interactive

3-Ausfahrt

[postgres]$ exit
3
Saman Mohamadi

Ich hatte das gleiche Problem, ich mache das einfach

Sudo su - postgres

createuser odoo -U postgres -dRSP #P für Kennwort ( odoo oder Benutzername den Sie möchten, um den Postgres Zugriff zu gewähren)

1
Sagar T

Bei Windows verwenden:

C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>

Fügen Sie gegebenenfalls --superuser oder --createdb hinzu. 

Unter https://www.postgresql.org/docs/current/static/app-createuser.html finden Sie weitere Optionen.

0
ostergaard