Jaka jest domyślna nazwa użytkownika / hasło administratora dla postgres po nowej instalacji?

Odpowiedzi:

533

UWAGA Odpowiedź na temat zmiany hasła UNIX dla „postgres” na „$ sudo passwd postgres” nie jest preferowana, a nawet może być NIEBEZPIECZNA !

Oto dlaczego: Domyślnie konto „postgres” w systemie UNIX jest zablokowane, co oznacza, że ​​nie można się zalogować przy użyciu hasła. Jeśli użyjesz „sudo passwd postgres”, konto zostanie natychmiast odblokowane. Co gorsza, jeśli ustawisz hasło na coś słabego, na przykład „postgres”, to będziesz narażony na wielkie niebezpieczeństwo bezpieczeństwa. Na przykład istnieje wiele botów próbujących zalogować się do systemu UNIX w kombinacji nazwy użytkownika / hasła „postgres / postgres”.

Powinieneś postępować zgodnie z odpowiedzią Chrisa Jamesa :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

Aby to trochę wyjaśnić. Zwykle są dwa domyślne sposoby logowania do serwera PostgreSQL:

  1. Uruchamiając komendę „psql” jako użytkownik systemu UNIX (tak zwane uwierzytelnianie IDENT / PEER), np sudo -u postgres psql. : Zauważ, że sudo -uNIE odblokowuje użytkownika UNIX.

  2. przez połączenie TCP / IP z wykorzystaniem zarządzanej nazwy użytkownika / hasła PostgreSQL (tak zwane uwierzytelnianie TCP) (tj. NIE hasła UNIX).

Dlatego nigdy nie chcesz ustawiać hasła do konta UNIX „postgres”. Pozostaw domyślnie zablokowane.

Oczywiście wszystko może się zmienić, jeśli skonfigurujesz go inaczej niż ustawienie domyślne. Na przykład można zsynchronizować hasło PostgreSQL z hasłem UNIX i zezwalać tylko na lokalne logowanie. To wykraczałoby poza zakres tego pytania.

użytkownik716468
źródło
11
jak więc zablokować postgres użytkownika?
ultrajohn
3
@ultrajohn - zależy od używanej dystrybucji, ale możesz edytować / etc / passwd i wstawić * zamiast hasła
lzap 12.12
3
/etc/shadowto miejsce, w którym przechowywane jest hasło @lzap.
Gringo Suave,
2
Racja, możesz ustawić / sbin / nologin w / etc / passwd lub umieścić * zamiast hasła w / etc / shadow.
lzap
34
passwd --lock postgres
Stéphane
166

Wpisz w wierszu polecenia:

$ sudo -u postgres psql postgres
postgres=# \password postgres

Zobaczysz:

Enter new password: 
Enter it again:
dcrawkstar
źródło
7
Jest to potrzebne do użycia narzędzia takiego jak pgadminIII (podczas konfigurowania profilu serwera) natychmiast po zainstalowaniu samego Postgres. Dzięki!
limist
64

Manipulujesz postgres za pośrednictwem użytkownika postgres, ponieważ:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
David Mackintosh
źródło
5
@ThierryLam Musisz być rootem do suużytkownika postgres bez podawania hasła. W większości systemów konto Postgres Unix jest zablokowane (hasło nie będzie działać), co oznacza, że tylko root może sudo tego konta.
voretaq7,
2
Użyj sudozamiast su.
reinierpost
8
Musiałem biec sudo su - postgres: \
Jim Schubert
3
@Jim Schubert: możesz także biegać sudo -u postgres.
reinierpost
1
sudo -u postgres psql - działa również, więc możesz to zrobić w jednym kroku.
Ominus,
21

W systemie Windows wykonaj następujące czynności (WAŻNE: użyj konta administratora systemu Windows ):

  1. Po instalacji otwórz <PostgreSQL PATH>\data\pg_hba.conf.

  2. Zmodyfikuj te dwa wiersze i zmień „md5” na „trust”:

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. Uruchom ponownie usługę PostgreSQL (może nie być to konieczne).

  4. (Opcjonalnie) Otwórz wiersz polecenia i zmień stronę kodową na 1252:

    cmd.exe /c chcp 1252

  5. Zaloguj się do PostgreSQL. Nie będzie potrzebne hasło (zwróć uwagę na parametr -U wielkich liter):

    psql -U postgres

  6. (Opcjonalnie, zalecane ze względów bezpieczeństwa) Zmień postgreshasło użytkownika:

    \password postgres

    i zmień „zaufanie” z powrotem na „md5” w pg_hba.conf.

MS Dousti
źródło
5

Jeśli próbujesz uzyskać dostęp do powłoki PostgreSQL, możesz wpisać:

psql -U postgres my_database

Gdzie my_databasejest nazwa twojej bazy danych.

Marcio Mazzucato
źródło