Zapomniałem lub wpisałem (podczas instalacji) hasło do domyślnego użytkownika Postgres. Nie mogę go uruchomić i pojawia się następujący błąd:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
Czy zresztą zresetować hasło lub jak utworzyć nowego użytkownika z uprawnieniami administratora?
Jestem nowy w Postgres i właśnie zainstalowałem go po raz pierwszy. Próbuję go używać z Railsami i korzystam z systemu Mac OS X Lion.
Odpowiedzi:
znajdź plik
pg_hba.conf
- może znajdować się na przykład w/etc/postgresql-9.1/pg_hba.conf
.cd /etc/postgresql-9.1/
Utwórz kopię zapasową
cp pg_hba.conf pg_hba.conf-backup
umieść następujący wiersz (jako pierwszy wiersz bez komentarza lub jako jedyny):
zrestartuj serwer PostgreSQL (np. w systemie Linux :)
sudo /etc/init.d/postgresql restart
Jeśli usługa (demon) nie rozpoczyna raportowania w pliku dziennika:
powinieneś się zmienić
local all all trust
do
host all all 127.0.0.1/32 trust
możesz teraz połączyć się jako dowolny użytkownik. Połącz jako superużytkownik
postgres
(uwaga, nazwa superużytkownika może być inna w twojej instalacji. Na przykład w niektórych systemach nazywa się topgsql
. )psql -U postgres
lub
psql -h 127.0.0.1 -U postgres
(zauważ, że przy pierwszym poleceniu nie zawsze będziesz połączony z hostem lokalnym)
Zresetuj hasło („zamień moją_nazwa_użytkownika na postgres, ponieważ resetujesz użytkownika postgres )
ALTER USER my_user_name with password 'my_secure_password';
Przywróć stary
pg_hba.conf
, jak to jest bardzo niebezpieczne , aby zachować wokółcp pg_hba.conf-backup pg_hba.conf
zrestartuj serwer, aby uruchomić sejf
pg_hba.conf
sudo /etc/init.d/postgresql restart
Dalsze informacje na temat tego pliku pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html
źródło
psql
? Ciągle pojawia się monit o hasło i nie wiemŁącząc się z postgres z wiersza poleceń, nie zapomnij dodać
-h localhost
jako parametru wiersza polecenia. Jeśli nie, postgres spróbuje połączyć się przy użyciu trybu uwierzytelniania PEER.Poniżej pokazano reset hasła, nieudane logowanie z uwierzytelnieniem PEER i udane logowanie przy użyciu połączenia TCP.
W braku:
Praca z
-h localhost
:źródło
Plik
pg_hba.conf
(C:\Program Files\PostgreSQL\9.3\data
) zmienił się od czasu udzielenia tych odpowiedzi. Co pracował dla mnie, w systemie Windows, to otworzyć plik i zmienićMETHOD
zmd5
celutrust
:Następnie, używając pgAdmin III, zalogowałem się bez hasła i zmieniłem
postgres'
hasło użytkownika , przechodząc doFile -> Change Password
źródło
trust
możesz postępować zgodnie z tym i zmienić hasło w cmdTylko uwaga, na Linuksie Możesz po prostu uruchomić,
sudo su - postgres
aby zostać użytkownikiem postgres, a stamtąd zmienić to, co wymagane przy użyciu psql.źródło
Edytuj plik
/etc/postgresql/<version>/main/pg_hba.conf
i znajdź następujący wiersz:Edytuj linię i zmień
md5
na końcutrust
i zapisz plikPonownie załaduj usługę postgresql
Spowoduje to załadowanie plików konfiguracyjnych. Teraz możesz zmodyfikować
postgres
użytkownika, logując się dopsql
powłokiZaktualizuj
postgres
hasło użytkownikaEdytuj plik
/etc/postgresql/<version>/main/pg_hba.conf
itrust
wróć domd5
pliku i zapisz goPonownie załaduj usługę postgresql
Sprawdź, czy zmiana hasła działa
źródło
Właśnie miałem ten problem w systemie Windows 10, aw moim przypadku problem polegał na tym, że właśnie działałem
psql
i domyślnie próbowałem zalogować się przy użyciu mojej nazwy użytkownika Windows („Nathan”), ale nie było użytkownika PostgreSQL o takiej nazwie, i to mi nie mówiło.Rozwiązaniem było uruchomienie,
psql -U postgres
a nie tylkopsql
hasło, które wprowadziłem podczas instalacji.źródło
Dodanie odpowiedzi dla użytkownika systemu Windows dla najnowszej wersji postgres (> 10),
Przejdź do lokalizacji instalacji postgres i wyszukaj
pg_hba.conf
, znajdziesz ją..\postgres\data\pg_hba.conf
Otwórz ten plik za pomocą notatnika, znajdź ten wiersz,
Zmień metodę z md5 na zaufanie,
Teraz przejdź do swojej powłoki SQL (PSQL) i pozostaw wszystko puste,
Tym razem nie poprosi o podanie hasła, a użytkownik zostanie zalogowany,
Teraz uruchom tę linię,
ALTER USER yourusername WITH SUPERUSER
Teraz możesz opuścić powłokę za pomocą \ q
Ponownie przejdź do pliku pg_hba.conf i ponownie zmień METODĘ z trust na md5 i zapisz go.
Zaloguj się teraz, używając nowego użytkownika i hasła, i możesz sprawdzić \ du pod kątem jego atrybutów.
źródło
W przypadku instalacji systemu Windows tworzony jest użytkownik systemu Windows. I „psql” użyj tego użytkownika do połączenia z portem. Jeśli zmienisz hasło użytkownika PostgreSQL, nie zmieni ono hasła systemu Windows. Wiersz polecenia poniżej działa tylko, jeśli masz dostęp do wiersza polecenia.
Zamiast tego możesz użyć aplikacji Windows GUI „c: \ Windows \ system32 \ lusrmgr.exe”. Ta aplikacja zarządza użytkownikami utworzonymi przez system Windows. Możesz teraz zmodyfikować hasło.
źródło
To, co zrobiłem, aby rozwiązać ten sam problem, to:
Otwórz plik pg_hba.conf w edytorze gedit z terminala:
Poprosi o hasło. Wprowadź hasło logowania administratora. Otworzy się gedit z plikiem. Wklej następujący wiersz:
tuż poniżej -
Zapisz i zamknij. Zamknij terminal, otwórz go ponownie i uruchom następujące polecenie:
Wejdziesz teraz do konsoli psql. Teraz zmień hasło, wpisując to:
Jeśli mówi, że użytkownik nie istnieje, zamiast
ALTER
używaćCREATE
.Na koniec usuń tę linię, którą wkleiłeś w pg_hba i zapisz ją.
źródło
Jeśli jesteś w systemie Windows, możesz po prostu uruchomić
i zaloguj się w postgres za pomocą postgres / postgres jako użytkownik / hasło
źródło
Plik .pgpass w katalogu osobistym użytkownika lub plik, do którego odwołuje się PGPASSFILE, może zawierać hasła, których należy użyć, jeśli połączenie wymaga hasła (a hasło nie zostało określone inaczej). W systemie Microsoft Windows plik nosi nazwę% APPDATA% \ postgresql \ pgpass.conf (gdzie% APPDATA% odnosi się do podkatalogu Dane aplikacji w profilu użytkownika).
Ten plik powinien zawierać wiersze o następującym formacie:
nazwa hosta: port: baza danych: nazwa użytkownika: hasło
(Do pliku można dodać komentarz przypominający, kopiując wiersz powyżej i poprzedzając go znakiem #). Każde z pierwszych czterech pól może być wartością dosłowną lub *, która pasuje do dowolnej wartości. Zostanie użyte pole hasła z pierwszego wiersza, które odpowiada bieżącym parametrom połączenia. (Dlatego, jeśli używasz symboli wieloznacznych, umieść bardziej szczegółowe wpisy.) Jeśli wpis musi zawierać: lub \, użyj tego znaku. Nazwa hosta localhost jest zgodna z połączeniami TCP (nazwa hosta localhost) i gniazdem domeny Unix (pghost pusty lub domyślny katalog gniazd) pochodzących z komputera lokalnego. Na serwerze rezerwowym nazwa bazy danych replikacji odpowiada strumieniowym połączeniom replikacji wykonanym z serwerem głównym. Pole bazy danych ma ograniczoną użyteczność, ponieważ użytkownicy mają to samo hasło do wszystkich baz danych w tym samym klastrze.
W systemach Unix uprawnienia w .pgpass muszą uniemożliwiać dostęp do świata lub grupy; osiągnij to za pomocą komendy chmod 0600 ~ / .pgpass. Jeśli uprawnienia są mniej surowe, plik zostanie zignorowany. W systemie Microsoft Windows zakłada się, że plik jest przechowywany w bezpiecznym katalogu, więc nie przeprowadza się specjalnych kontroli uprawnień.
źródło
Jeśli korzystasz z postgresql na Mac OS, spróbuj tych :
Edytuj plik pg_hba.conf
sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf
Zmień metodę „md5” dla wszystkich użytkowników, aby „ufali” w dolnej części pliku
Znajdź nazwę usługi
ls / Library / LaunchDaemons
Poszukaj postgresql
Zatrzymaj usługę postgresql
sudo launchctl stop com.edb.launchd.postgresql-9.2
Uruchom usługę postgresql
sudo launchctl start com.edb.launchd.postgresql-9.2
Rozpocznij sesję psql jako postgres
psql -U postgres
(nie powinien prosić o hasło z powodu ustawienia „zaufania”)
Zresetuj hasło w sesji psql, wpisując
ZMIEŃ USER postgres z hasłem „bezpieczne-nowe-hasło”;
wchodzić
Edytuj plik pg_hba.conf
Przełącz go z powrotem na „md5”
Uruchom ponownie usługi
źródło
Oto, co działało dla mnie w systemie Windows:
Zmodyfikuj lokalizacje pliku pg_hba.conf w C: \ Program Files \ PostgreSQL \ 9.3 \ data.
# IPv4 local connections: host all all 127.0.0.1/32 trust
Zmień metodę z trust na md5 i zrestartuj usługę postgres w systemie Windows.
Następnie możesz zalogować się przy użyciu użytkownika postgres bez hasła przy użyciu pgadmin. Możesz zmienić hasło używając Plik-> Zmień hasło.
Jeśli użytkownik postgres nie ma uprawnień administratora, nie możesz zmienić hasła. W takim przypadku zaloguj się do innego użytkownika (pgsql) z dostępem administratora i nadaj uprawnienia innym użytkownikom, klikając prawym przyciskiem myszy użytkowników i wybierając właściwości-> Uprawnienia roli.
źródło