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?
postgresql
user-management
Thierry Lam
quelle
quelle
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 :
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, dasssudo -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.
quelle
/etc/shadow
Hier wird das Passwort @lzap aufbewahrt.Geben Sie in die Befehlszeile ein:
Du wirst sehen:
quelle
Sie manipulieren Postgres über den Benutzer
postgres
wie folgt :quelle
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 rootsu
auf dieses Konto zugreifen kann .sudo
anstelle vonsu
.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
.quelle
Wenn Sie versuchen, auf die PostgreSQL-Shell zuzugreifen, können Sie Folgendes eingeben:
psql -U postgres my_database
Wo
my_database
ist Ihr Datenbankname?quelle