Ich habe gerade Postgres 8.4 auf Ubuntu 9.10 installiert und mich nie darum gebeten, einen Superuser zu erstellen. Gibt es einen Standard-Superuser und dessen Passwort? Wenn nicht, wie erstelle ich eine neue?
Ich habe gerade Postgres 8.4 auf Ubuntu 9.10 installiert und mich nie darum gebeten, einen Superuser zu erstellen. Gibt es einen Standard-Superuser und dessen Passwort? Wenn nicht, wie erstelle ich eine neue?
Antworten:
VORSICHT Die Antwort zum Ändern des UNIX-Kennworts für "postgres" durch "$ sudo passwd postgres" wird nicht bevorzugt und kann sogar GEFÄHRLICH sein !
Dies ist der Grund: Standardmäßig ist das UNIX-Konto "postgres" gesperrt, dh, es kann nicht mit einem Kennwort angemeldet werden. Wenn Sie "sudo passwd postgres" verwenden, wird das Konto sofort entsperrt. Schlimmer noch, wenn Sie das Passwort auf etwas Schwaches wie "Postgres" setzen, sind Sie einem großen Sicherheitsrisiko ausgesetzt. Beispielsweise gibt es eine Reihe von Bots, die versuchen, sich mit der Kombination aus Benutzername und Kennwort "postgres / postgres" bei Ihrem UNIX-System anzumelden.
Was Sie tun sollten, ist die Antwort von Chris James zu befolgen :
sudo -u postgres psql postgres
# \password postgres
Enter new password:
Um es ein bisschen zu erklären. Es gibt normalerweise zwei Standardmethoden, um sich beim PostgreSQL-Server anzumelden:
Durch Ausführen des Befehls "psql" als UNIX-Benutzer (sogenannte IDENT / PEER-Authentifizierung), z sudo -u postgres psql
. Beachten Sie, dass sudo -u
der UNIX-Benutzer NICHT entsperrt wird.
über eine TCP / IP-Verbindung unter Verwendung des von PostgreSQL selbst verwalteten Benutzernamens / Passworts (sogenannte TCP-Authentifizierung) (dh NICHT des UNIX-Passworts).
Sie möchten also niemals das Kennwort für das UNIX-Konto "postgres" festlegen. Lassen Sie es standardmäßig gesperrt.
Natürlich können sich die Dinge ändern, wenn Sie es anders als in der Standardeinstellung konfigurieren. Beispielsweise könnte man das PostgreSQL-Kennwort mit dem UNIX-Kennwort synchronisieren und nur lokale Anmeldungen zulassen. Das würde den Rahmen dieser Frage sprengen.
/etc/shadow
Hier wird das Passwort @lzap aufbewahrt.
Geben Sie in die Befehlszeile ein:
$ sudo -u postgres psql postgres
postgres=# \password postgres
Du wirst sehen:
Enter new password:
Enter it again:
Sie manipulieren Postgres über den Benutzer postgres
wie folgt :
# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
su
um den Benutzer postgres zu erreichen, ohne ein Kennwort einzugeben. Auf den meisten Systemen ist das Postgres-Unix-Konto gesperrt (es funktioniert kein Kennwort). Dies bedeutet, dass nur root su
auf dieses Konto zugreifen kann .
sudo
anstelle von su
.
sudo su - postgres
: \
sudo -u postgres
.
Führen Sie unter Windows die folgenden Schritte aus (WICHTIG: Verwenden Sie ein Windows- Administratorkonto ):
Nach der Installation öffnen <PostgreSQL PATH>\data\pg_hba.conf
.
Ändern Sie diese beiden Zeilen und ändern Sie "md5" in "trust":
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Starten Sie den PostgreSQL-Dienst neu (möglicherweise nicht erforderlich).
(Optional) Öffnen Sie eine Eingabeaufforderung und ändern Sie die Codepage in 1252:
cmd.exe /c chcp 1252
Melden Sie sich bei PostgreSQL an. Es wird kein Passwort benötigt (beachten Sie den Großbuchstaben -U):
psql -U postgres
(Optional, aus Sicherheitsgründen empfohlen) Ändern Sie das postgres
Kennwort des Benutzers:
\password postgres
und ändere "trust" zurück zu "md5" in pg_hba.conf
.
Wenn Sie versuchen, auf die PostgreSQL-Shell zuzugreifen, können Sie Folgendes eingeben:
psql -U postgres my_database
Wo my_database
ist Ihr Datenbankname?