Właśnie zainstalowałem postgres 8.4 na Ubuntu 9.10 i nigdy nie poprosił mnie o utworzenie superużytkownika. Czy istnieje domyślny administrator i jego hasło? Jeśli nie, jak mogę utworzyć nowy?
Właśnie zainstalowałem postgres 8.4 na Ubuntu 9.10 i nigdy nie poprosił mnie o utworzenie superużytkownika. Czy istnieje domyślny administrator i jego hasło? Jeśli nie, jak mogę utworzyć nowy?
Odpowiedzi:
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:
Uruchamiając komendę „psql” jako użytkownik systemu UNIX (tak zwane uwierzytelnianie IDENT / PEER), np sudo -u postgres psql
. : Zauważ, że sudo -u
NIE odblokowuje użytkownika UNIX.
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.
/etc/shadow
to miejsce, w którym przechowywane jest hasło @lzap.
Wpisz w wierszu polecenia:
$ sudo -u postgres psql postgres
postgres=# \password postgres
Zobaczysz:
Enter new password:
Enter it again:
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;
su
uż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 su
do tego konta.
sudo
zamiast su
.
sudo su - postgres
: \
sudo -u postgres
.
W systemie Windows wykonaj następujące czynności (WAŻNE: użyj konta administratora systemu Windows ):
Po instalacji otwórz <PostgreSQL PATH>\data\pg_hba.conf
.
Zmodyfikuj te dwa wiersze i zmień „md5” na „trust”:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Uruchom ponownie usługę PostgreSQL (może nie być to konieczne).
(Opcjonalnie) Otwórz wiersz polecenia i zmień stronę kodową na 1252:
cmd.exe /c chcp 1252
Zaloguj się do PostgreSQL. Nie będzie potrzebne hasło (zwróć uwagę na parametr -U wielkich liter):
psql -U postgres
(Opcjonalnie, zalecane ze względów bezpieczeństwa) Zmień postgres
hasło użytkownika:
\password postgres
i zmień „zaufanie” z powrotem na „md5” w pg_hba.conf
.
Jeśli próbujesz uzyskać dostęp do powłoki PostgreSQL, możesz wpisać:
psql -U postgres my_database
Gdzie my_database
jest nazwa twojej bazy danych.