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.
-
Verbinden Sie sich mit der Standarddatenbank mit dem Benutzer postgres:
sudo -u postgres psql-Vorlage1
-
Legen Sie das Passwort für den Benutzer postgres fest und beenden Sie dann psql (Strg-D):
ALTER USER Postgres mit verschlüsseltem Passwort „xxxxxxx“;
-
Bearbeiten Sie
pg_hba.conf
Datei:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
und ändern Sie "peer" in "md5" in der Zeile bezüglich postgres:
lokal alle postgres
Peermd5Um zu erfahren, welche Version von postgresql Sie ausführen, suchen Sie nach dem Versionsordner unter
/etc/postgresql
. Sie können auch Nano oder einen anderen Editor anstelle von VIM verwenden. -
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 ). -
Erstellen Sie einen Benutzer mit demselben Namen wie Sie (um ihn zu finden, können Sie
whoami
eingeben ):sudo 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 kann, ein Superuser ist und ein verschlüsseltes Passwort haben wird. Die wirklich wichtigen sind -P -E, damit Sie aufgefordert werden, das zu verschlüsselnde Passwort einzugeben, und -d, damit Sie
createdb
eingeben können .Achten Sie auf Passwörter :Es wird Sie zuerst zweimal nach dem neuen Passwort (für den neuen Benutzer) fragen, wiederholt, und dann einmal nach dem Postgres-Passwort (das in Schritt 2 angegebene).
-
Bearbeiten Sie erneut
pg_hba.conf
Datei (siehe Schritt 3 oben) und ändern Sie "peer" in "md5" in der Zeile, die "alle" anderen Benutzer betrifft:lokal alle alle
Peermd5 -
Starten Sie neu (wie in Schritt 4) und prüfen Sie, ob Sie sich ohne -U postgres:
anmelden könnenpsql-Vorlage1
Beachten Sie, dass, wenn Sie nur
psql
tun , wird es fehlschlagen, da es versuchen wird, Sie mit einer Standarddatenbank zu verbinden, die denselben Namen wie Sie hat (z. B.whoami
). template1 ist die Admin-Datenbank, die von Anfang an dabei ist. -
Jetzt
createdb <dbname>
sollte funktionieren.
Unter Linux ist PostgresQL normalerweise so konfiguriert, dass sich der Root-Benutzer als Postgres-Superuser postgres
anmelden kann von der Shell (Konsole oder ssh).
$ psql -U postgres
Dann würden Sie einfach wie gewohnt eine neue Datenbank erstellen:
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
herumschlagen .
Es gibt zwei Methoden, die Sie verwenden können. Beide erfordern das Erstellen eines Benutzers und eine Datenbank.
-
Mit createuser und createdb ,
$ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase
-
Verwendung der SQL-Administrationsbefehle und Verbindung mit einem Passwort ü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 jederzeit abrufen, indem Sie Folgendes als
postgres
ausführen Benutzer,SHOW port;
Oder,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Nebenbemerkung:der postgres
Benutzer
Ich empfehle NICHT Ändern des postgres
Benutzer.
- Es ist normalerweise vom Betriebssystem gesperrt. Niemand soll sich beim Betriebssystem als
postgres
"einloggen". . Sie sollten root haben, um sich alspostgres
zu authentifizieren . - Es ist normalerweise nicht passwortgeschützt und delegiert an das Host-Betriebssystem. Das ist eine gute Sache . Dies bedeutet normalerweise, sich als
postgres
anzumelden Dies ist das PostgreSQL-Äquivalent vonSA
von SQL Server , müssen Sie Schreibzugriff auf die zugrunde liegenden Datendateien haben. Und das bedeutet, dass Sie normalerweise sowieso Chaos anrichten könnten. - Indem Sie dies deaktiviert lassen, beseitigen Sie das Risiko eines Brute-Force-Angriffs durch einen benannten Superuser. Das Verbergen und Verschleiern des Namens des Superusers hat Vorteile.