2013-06-06 6 views
53

Ich versuche, Postgres zum ersten Mal einzurichten, und ich muss einen Benutzer mit Berechtigungen zum Lesen und Erstellen von Datenbanken erstellen. Allerdings, wenn ich „createusername“ in meinem Terminal verwenden erhalte ich die folgende Meldung:Createuser: Verbindung zu Datenbankpostgres nicht möglich: FATAL: Rolle "Tom" existiert nicht

AngelegtVon: nicht zur Datenbank Postgres verbinden könnte: FATAL: Rolle „tom“ nicht

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

Irgendwelche Hilfe?

Antwort

-2

Sie müssen zuerst initdb ausführen. Es wird die Datenbank-Cluster und die Ersteinrichtung erstellen

Siehe How to configure postgresql for the first time? und http://www.postgresql.org/docs/8.4/static/app-initdb.html

+4

Dies ist völlig inkorrekt. Wenn der Benutzer "initdb" nicht ausgeführt hätte, würde kein Datenbankserver ausgeführt werden und Verbindungen akzeptieren, um die gemeldete Fehlermeldung zu erzeugen. Bitte entfernen Sie diese irreführende Antwort.(BTW, in Zukunft, bitte Link zu/docs/current/static/zu vermeiden, dass veraltete Links akkumulieren) –

91

Sie Ubuntu erwähnt so erraten, ich werde Sie die PostgreSQL-Pakete von Ubuntu durch apt installiert.

Wenn ja, existiert das PostgreSQL-Benutzerkonto postgres bereits und ist so konfiguriert, dass es über peer Authentifizierung für Unix-Sockets in pg_hba.conf erreichbar ist. Sie erhalten, um es durch Befehle als postgres Unix-Benutzer ausgeführt wird, zB:

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

Das ist alles in der Ubuntu PostgreSQL Dokumentation, die das erste Google-Hit für „Ubuntu PostgreSQL“ und wird in zahlreichen Stack Overflow Fragen abgedeckt.

(Sie haben diese Frage sehr viel schwieriger gemacht zu beantworten, indem Details wie die OS Weglassen und Version Sie sind, wie Sie PostgreSQL installiert usw.)

+0

gut nach dem Erstellen von Owning_user, Wie verbinden Sie sich mit diesem Benutzer? Ich meine, Standardbenutzer zu verbinden, den ich benutze, sudo -u postgres psql postgres. selbe Weise, wie man owning_user anschließt? – Jony

+1

Drei Optionen. (a) Setze ein Passwort für diesen Benutzer und bearbeite 'pg_hba.conf', um' md5' auth für diesen Benutzer zu verwenden (siehe Handbuch); (b) Erstellen Sie einen Betriebssystembenutzer mit dem gleichen Namen und verwenden Sie weiterhin 'peer' auth; oder (c) fortgeschrittener, erstellen Sie eine 'pg_ident.conf'-Zuordnung, damit sich Ihr Betriebssystembenutzer als neuer Benutzer anmelden kann. –

23
sudo -u postgres createuser -s tom 

dies sollte Ihnen helfen Dies passiert, wenn der Administrator kein PostgreSQL-Benutzerkonto für Sie erstellt hat. Es könnte auch sein, dass Ihnen ein PostgreSQL-Benutzername zugewiesen wurde, der sich von Ihrem Betriebssystem-Benutzernamen unterscheidet. In diesem Fall müssen Sie den Schalter -U verwenden.

3

Ihr Fehler ist in der offiziellen Dokumentation veröffentlicht. Sie können read this article.

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

Dies geschieht, wenn der Administrator ein PostgreSQL-Benutzerkonto nicht für Sie erstellt hat. (PostgreSQL-Benutzerkonten unterscheiden sich von den Benutzerkonten des Betriebssystems.) Wenn Sie Administrator sind, finden Sie weitere Informationen unter Chapter 20 für die Erstellung von Konten. Sie müssen der Betriebssystembenutzer werden, unter dem PostgreSQL installiert wurde (normalerweise postgres), um das erste Benutzerkonto zu erstellen.Es könnte auch sein, dass Ihnen ein PostgreSQL-Benutzername zugewiesen wurde, der sich vom Benutzernamen Ihres Betriebssystems unterscheidet. Erstellen

1) mit einem PostgreSQL-Benutzerkonto: in diesem Fall müssen Sie die Option -U verwenden oder den PGUSER Umgebungsvariable auf Ihren PostgreSQL-Benutzername

Für Ihre Zwecke angeben, können Sie tun

sudo -u postgres createuser tom -d -P 

(die -P Option ein Passwort festlegen,.. die -d Option ermöglicht die Erstellung von Datenbank für Ihren Benutzernamen ‚tom‘ Beachten Sie, dass ‚tom‘ ist Ihr Betriebssystem Benutzernamen auf diese Weise können Sie PostgreSQL Befehle ausführen ohne sudo ing.)

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

20

See git gist with instructions here

Run:

sudo -u postgres psql 

in Ihrem Terminal, um in Postgres

postgres=# 

Run

CREATE USER new_username; 

Hinweis: Ersetzen Sie new_username mit der Benutzer, den du erstellen willst, in deinem Fall wird das tom sein.

postgres=# CREATE USER new_username; 
CREATE ROLE 

Da Sie, dass Benutzer ein DB erstellen zu können, müssen Sie die Rolle ändern, um Superuser

postgres=# ALTER USER new_username SUPERUSER CREATEDB; 
ALTER ROLE 

Um zu bestätigen, alles erfolgreich war,

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=# 
+0

Das funktionierte, um in Postgres zu kommen: 'psql -U postgres' – leontalbot

2

1 - Login als Standard PostgreSQL Benutzer (Postgres)

sudo -u postgres -i 

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

[postgres]$ createuser --interactive 

3-Ausfahrt

[postgres]$ exit 
0

ich hatte das gleiche Problem, ich tue nur diese

sudo su - postgres

AngelegtVon odoo -U postgres -dRSP #P für Passwort (odoo oder Benutzername, dass Sie den Postgres Zugriff geben möchten)

Verwandte Themen