it-swarm.com.de

Wie konfiguriere ich postgresql zum ersten Mal?

Ich habe gerade postgresql installiert und während der Installation das Passwort x angegeben. Wenn ich versuche, createdb auszuführen und ein Passwort anzugeben, erhalte ich die Meldung:

createdb: Verbindung zur Datenbank konnte nicht hergestellt werden postgres: FATAL: Kennwortauthentifizierung für Benutzer fehlgeschlagen

Gleiches gilt für createuser.

Wie soll ich anfangen? Kann ich mich als Benutzer zur Datenbank hinzufügen?

177
Rohit Banga

Die anderen Antworten waren für mich nicht ganz zufriedenstellend. Hier ist, was für postgresql-9.1 auf Xubuntu 12.04.1 LTS funktioniert hat.

  1. Stellen Sie mit dem Benutzer postgres eine Verbindung zur Standarddatenbank her:

    Sudo -u postgres psql template1

  2. Legen Sie das Kennwort für den Benutzer postgres fest und beenden Sie dann psql (Strg-D):

    ALTER USER postgres mit verschlüsseltem Passwort 'xxxxxxx';

  3. Bearbeiten Sie die Datei pg_hba.conf:

    Sudo vim /etc/postgresql/9.1/main/pg_hba.conf

    Und ändern Sie "peer" in "md5" in der Zeile bezüglich postgres:

    local all postgrespeer md5

  4. Starten Sie die Datenbank neu:

    Sudo /etc/init.d/postgresql neu starten

    (Hier können Sie überprüfen, ob es mit psql -U postgres Funktioniert hat.)

  5. Erstellen Sie einen Benutzer mit demselben Namen wie Sie (um ihn zu finden, können Sie whoami eingeben):

    createuser -U postgres -d -e -E -l -P -r -s <my_name>

    Die Optionen weisen postgresql an, einen Benutzer zu erstellen, der sich anmelden, Datenbanken erstellen, neue Rollen erstellen, ein Superuser ist und ein verschlüsseltes Kennwort hat. Die wirklich wichtigen sind -P -E, damit Sie aufgefordert werden, das zu verschlüsselnde Kennwort einzugeben, und -d, damit Sie ein createdb ausführen können.

    Vorsicht vor Passwörtern: Er fragt Sie zuerst zweimal nach dem neuen Passwort (für den neuen Benutzer), wiederholt und dann einmal nach dem Postgres-Passwort (das in Schritt 2 angegebene).

  6. Bearbeiten Sie erneut die Datei pg_hba.conf (Siehe Schritt 3 oben) und ändern Sie "peer" in "md5" in der Zeile, die "alle" anderen Benutzer betrifft:

    local all allpeer md5

  7. Starten Sie neu (wie in Schritt 4) und überprüfen Sie, ob Sie sich ohne -U postgres anmelden können:

    psql template1

    Beachten Sie, dass wenn Sie nur psql ausführen, dies fehlschlägt, da versucht wird, eine Verbindung zu einer Standarddatenbank herzustellen, die denselben Namen wie Sie hat (dh whoami). template1 ist die Admin-Datenbank, die von Anfang an hier ist.

  8. Jetzt sollte createdb <dbname> Funktionieren.

308
Manur

Unter Linux ist PostgresQL normalerweise so konfiguriert, dass sich der Root-Benutzer über die Shell (Konsole oder ssh) als postgres-Superuser postgres anmelden kann.

$ psql -U postgres

Dann erstellen Sie wie gewohnt eine neue Datenbank:

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;

Dies sollte funktionieren, ohne pg_hba.conf Zu berühren. Wenn Sie dies mit einem GUI-Tool über das Netzwerk tun möchten, müssen Sie sich mit pg_hba.conf Anlegen.

51

Das ist meine Lösung:

su root
su postgres
psql
19
Admdebian

Es gibt zwei Methoden, die Sie verwenden können. Beide erfordern das Erstellen eines Benutzers nd einer Datenbank.

  1. Mit createuser und createdb,

    $ Sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    
  2. Verwenden der SQL-Verwaltungsbefehle und Herstellen einer Verbindung mit einem Kennwort über TCP

    $ Sudo -u postgres psql postgres
    

    Und dann in der Psql-Shell

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;
    

    Dann können Sie sich einloggen,

    $ psql -h localhost -d mydatabase -U myuser -p <port>
    

    Wenn Sie den Port nicht kennen, können Sie ihn immer durch Ausführen der folgenden Befehle als Benutzer postgres abrufen:

    SHOW port;
    

    Oder,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf
    

Nebenbemerkung: der Benutzer postgres

Ich schlage vor [~ # ~] nicht [~ # ~] den Benutzer postgres zu ändern.

  1. Es ist normalerweise vom Betriebssystem gesperrt. Niemand soll sich als postgres beim Betriebssystem "anmelden". Sie sollten root haben, um sich als postgres zu authentifizieren.
  2. Es ist normalerweise nicht kennwortgeschützt und wird an das Host-Betriebssystem delegiert. Dies ist eine gute Sache. Dies bedeutet normalerweise, dass Sie Schreibzugriff auf die zugrunde liegenden Datendateien haben müssen, um sich als postgres anzumelden. Dies ist das PostgreSQL-Äquivalent zu SA von SQL Server. Und das bedeutet, dass Sie normalerweise ohnehin Chaos anrichten können.
  3. Wenn Sie diese Option deaktivieren, wird das Risiko eines Brute-Force-Angriffs durch einen benannten Superuser vermieden. Das Verbergen und Verschleiern des Superuser-Namens hat Vorteile.
14
Evan Carroll

BEARBEITEN: Warnung: Bitte lesen Sie die Antwort von Evan Carroll . Es scheint, dass diese Lösung nicht sicher und nicht empfohlen ist.

Dies funktionierte für mich in der Standard Ubuntu 14.04 64-Bit -Installation.

Ich habe die Anweisungen mit kleinen Änderungen befolgt, die ich in http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html gefunden habe

  1. Installieren Sie postgreSQL (falls noch nicht auf Ihrem Computer vorhanden):

Sudo apt-get install postgresql

  1. Führen Sie psql mit dem Benutzer postgres aus

Sudo –u postgres psql postgres

  1. Legen Sie ein neues Passwort für den Benutzer postgres fest:

\password postgres

  1. Beenden Sie psql

\q

  1. Editiere /etc/postgresql/9.3/main/pg_hba.conf und ändere:

#Database administrative login by Unix domain socket local all postgres peer

Zu:

#Database administrative login by Unix domain socket local all postgres md5

  1. Starten Sie postgreSQL neu:

Sudo service postgresql restart

  1. Erstellen Sie eine neue Datenbank

Sudo –u postgres createdb mytestdb

  1. Führen Sie psql erneut mit dem Benutzer postgres aus:

psql –U postgres –W

  1. Listen Sie die vorhandenen Datenbanken auf (Ihre neue Datenbank sollte jetzt dort sein):

\l

14
Robert

Sie müssen wahrscheinlich Ihre pg_hba.conf Datei. Diese Datei steuert, welche Benutzer sich über welche IP-Adressen anmelden können. Ich denke, dass der postgres-Benutzer standardmäßig ziemlich gesperrt ist.

2
Neall

Wenn Sie mit MacOS arbeiten, wie ich es bin, ist der Benutzer postgres möglicherweise nicht verfügbar.

Beim Versuch, Sudo -u postgres psql Ich habe den Fehler Sudo: unknown user: postgres

Zum Glück gibt es ausführbare Dateien, die postgres bereitstellt.

createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick

Dann konnte ich ohne Probleme auf psql zugreifen.

psql
psql (10.2)
Type "help" for help.

nick=#

Wenn Sie eine neue Postgres-Instanz von Grund auf erstellen, sind hier die Schritte aufgeführt, die ich unternommen habe. Ich habe einen nicht standardmäßigen Port verwendet, um zwei Instanzen ausführen zu können.

mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local

Dann habe ich /var/postgres/var-10-local/postgresql.conf mit meinem bevorzugten Hafen, 5433.

/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433

createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433
createdb --owner=nick --port=5433

Getan!

2
Nick Woodhams
Note: textdb is the database which you are going to explore with 'alex' user 

[email protected]:~# Sudo su - postgres 
postgres=#  psql   
postgres=#  create database testdb;
postgres=#  create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;`enter code here`
1
Suman Astani

Navigieren Sie einfach zum Installationsverzeichnis und führen Sie die Datei "pg_env.bat" aus. Gehen Sie anschließend zum Ordner "bin" und führen Sie "pgAdmin.exe" aus. Das muss zweifellos funktionieren!

0