Błąd uzyskiwania: peer authentication failed for user "postgres", when trying to get pgsql working with rails
Im getting
FATAL: Peer authentication failed for user "postgres"
Kiedy staram się, aby postgres działał z Railami.
Oto mój pg_hba.conf
, my database.yml
, i zrzut pełnego śladu .
Zmieniłem uwierzytelnianie na md5 w pg_hba i próbowałem różnych rzeczy, ale nic nie działa.
Próbowałem również utworzyć nowego użytkownika i bazę danych zgodnie z Rails 3.2, FATAL: peer authentication failed for user (PG:: Error)
Ale nie pojawiają się na pgadminie ani nawet kiedy biegam sudo -u postgres psql -l
18 answers
Problemem nadal jest Twój plik pg_hba.conf
(/etc / postgresql/9.1/main / pg_hba.conf*). Ten wiersz:
local all postgres peer
Powinno być
local all postgres md5
* Jeśli nie możesz znaleźć tego pliku, uruchomienie {[3] } powinno pokazać, gdzie znajduje się plik.
Po zmianie tego pliku nie zapomnij ponownie uruchomić serwera PostgreSQL. Jeśli jesteś na Linuksie, to będzie to sudo service postgresql restart
.
Są to krótkie opisy obu opcji zgodnie z oficjalnymi dokumentami PostgreSQL dotyczącymi uwierzytelniania metody .
Peer authentication
Metoda peer authentication działa poprzez uzyskanie klienta nazwa użytkownika systemu operacyjnego z jądra i używanie go jako dozwolonego nazwa użytkownika bazy danych (z opcjonalnym mapowaniem nazwy użytkownika). Metoda ta jest obsługiwane tylko w połączeniach lokalnych.
Uwierzytelnianie hasła
Metody uwierzytelniania oparte na hasłach to md5 i password. Te metody działają podobnie z wyjątkiem sposobu że hasło jest wysyłane przez połączenie, czyli odpowiednio MD5-hashed I clear-text.Jeśli w ogóle obawiasz się ataków typu "sniffing" to md5 jest preferowany. Jeśli to możliwe, należy zawsze unikać zwykłego hasła. Jednak md5 nie może być używany z funkcją db_user_namespace. Jeśli połączenie jest chronione szyfrowaniem SSL, a następnie można użyć hasła bezpiecznie (chociaż uwierzytelnianie certyfikatów SSL może być lepszym wyborem jeśli zależy od korzystanie z SSL).
Przykładowa lokalizacja dla pg_hba.conf
/ etc / postgresql/9.1/main / pg_hba.conf
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 03:31:06
Po zainstalowaniu Postgresql wykonałem poniższe kroki.
- otwórz plik
pg_hba.conf
Dla Ubuntu będzie on w/etc/postgresql/9.x/main
i zmień tę linię:
local all postgres peer
Do
local all postgres trust
- Restart serwera
sudo service postgresql restart
- Zaloguj się do psql i ustaw hasło
PSQL-u postgres
ALTER USER postgres with password 'your-pass';
- wreszcie Zmień
pg_hba.conf
z
local all postgres trust
Do
local all postgres md5
Po ponownym uruchomieniu postgresql serwer, można uzyskać do niego dostęp za pomocą własnego hasła
Szczegóły metod uwierzytelniania:
Trust-każdy, kto może połączyć się z serwerem, jest upoważniony do dostępu do bazy danych
Peer-używa nazwy użytkownika systemu operacyjnego klienta jako nazwy użytkownika bazy danych, aby uzyskać do niej dostęp.
Md5-password-base authentication
Aby uzyskać więcej informacji sprawdź tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-05 13:34:54
Jeśli łączysz się przez localhost (127.0.0.1), nie powinieneś doświadczać tego konkretnego problemu. Z pg_hba bym się nie wygłupiał.conf ale zamiast tego dostosowałbym Twój łańcuch połączeń:
psql -U someuser -h 127.0.0.1 database
Gdzie someuser to twój użytkownik, do którego się łączysz, a baza danych to baza danych, do której użytkownik ma uprawnienia.
Oto, co robię na Debianie, aby skonfigurować postgres:
http://www.postgresql.org/download/linux/debian/ (Wheezy 7.x)
as root …
root@www0:~# echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" >> /etc/apt/sources.list
root@www0:~# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
root@www0:~# apt-get update
root@www0:~# apt-get install postgresql-9.4
root@www0:~# su - postgres
postgres@www0:~$ createuser --interactive -P someuser
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
postgres@www0:~$ createdb -O someuser database
postgres@www0:~$ psql -U someuser -h 127.0.0.1 database
Smacznego!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-01 10:41:02
To mi się udało !!
sudo -u postgres psql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-10 07:39:13
- przejdź do tego / etc / postgresql / 9.x / main / i open pg_hba.conf Plik
W moim przypadku:
$> sudo nano /etc/postgresql/9.3/main/pg_hba.conf
- Zastąppeer na md5
Więc to zostanie zmienione na:
Logowanie do bazy danych przez gniazdo domeny Unix local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
To:
Logowanie do bazy danych przez gniazdo domeny Unix local all Postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
-
Następnie uruchom ponownie serwer pg:
$ > sudo service postgresql restart
Poniżej znajduje się lista metod używanych do łączenia się z postgresem:
# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
# "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert". Note that
# "password" sends passwords in clear text; "md5" is preferred since
# it sends encrypted passwords.
Uwaga: Jeśli nie utworzyłeś jeszcze użytkownika postgres. Utwórz go i teraz możesz uzyskać dostęp do serwera postgres przy użyciu tych poświadczeń użytkownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-10 11:29:37
Jeśli masz problem, musisz zlokalizować swój pg_hba.conf
. Polecenie to:
find / -name 'pg_hba.conf' 2>/dev/null
A następnie zmień plik konfiguracyjny:
Postgresql 9.3
Postgresql 9.4
Następnym krokiem jest ponowne uruchomienie instancji db:
service postgresql-9.3 restart
Jeśli masz jakieś problemy, musisz ustawić hasło ponownie:
ALTER USER db_user with password 'db_password';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-22 07:48:40
Miałem ten sam problem.
Rozwiązanie z depa jest absolutnie poprawne.
Upewnij się tylko, że masz skonfigurowanego użytkownika do korzystania z PostgreSQL.
Sprawdź plik:
$ ls /etc/postgresql/9.1/main/pg_hba.conf -l
Uprawnienia do tego pliku powinny być przyznane Użytkownikowi, u którego zarejestrowałeś swoje psql.
Dalej. Jeśli jesteś dobry do teraz..Zaktualizuj zgodnie z instrukcjami @ depa.
Tzn.
$ sudo nano /etc/postgresql/9.1/main/pg_hba.conf
A następnie wprowadzić zmiany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-14 02:25:57
Powyższe edycje zadziałały dla mnie, po tym jak zorientowałem się, że po ich wykonaniu muszę ponownie uruchomić serwer postgres. Dla ubuntu:
sudo /etc/init.d/postgresql restart
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-25 21:42:51
Jeśli chcesz zachować domyślną konfigurację, ale chcesz uwierzytelnić md5 z połączeniem z gniazdem dla jednego konkretnego połączenia użytkownika / db, dodaj linię "local" przed linią" local all / all":
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local username dbname md5 # <-- this line
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-10 12:11:15
Przenosiłem katalog danych na sklonowany serwer i miałem problemy z zalogowaniem się jako postgres. Resetowanie hasła postgres w ten sposób działało dla mnie.
root# su postgres
postgres$ psql -U postgres
psql (9.3.6)
Type "help" for help.
postgres=#\password
Enter new password:
Enter it again:
postgres=#
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-27 14:43:04
Użyj host=localhost
w połączeniu.
PGconn *conn = PQconnectdb(
"host=localhost user=postgres dbname=postgres password=123"
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-15 17:57:11
Zmiana metody peerna trust w pg_hba.conf (/etc / postgresql/9.1/main / pg_hba.conf / line 85) rozwiązuje problem. Dodanie md5 prosi o podanie hasła, dlatego jeśli istnieje wymóg unikania używania haseł, użyj trust zamiast md5.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-03 05:40:44
Poniższe polecenie działa dla mnie:
psql -d myDb -U username -W
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-16 10:27:10
Musisz po prostu ustawić metodę zaufania.
#TYPE DATABASE USER ADDRESS METHOD
local all all trust
I przeładować serwer postgres.
# service postgresql-9.5 reload
Zmiany w pg_hba.conf nie wymaga restartu serwera postgres. przeładuj.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-14 13:11:02
Wiele innych odpowiedzi dotyczy ustawień w różnych plikach konfiguracyjnych, a te odnoszące się do pg_hba.conf
mają zastosowanie i są w 100% poprawne. Upewnij się jednak, że modyfikujesz poprawne pliki konfiguracyjne .
Jak już inni wspominali, Lokalizacje plików konfiguracyjnych mogą być nadpisywane różnymi ustawieniami w głównym pliku konfiguracyjnym, a także dostarczaniem ścieżki do głównego pliku konfiguracyjnego w linii poleceń za pomocą opcji -D
.
Możesz użyć następujących polecenie podczas sesji psql, aby pokazać, gdzie są odczytywane pliki konfiguracyjne(zakładając, że możesz uruchomić psql). Jest to tylko krok rozwiązywania problemów, który może pomóc niektórym ludziom:]}
select * from pg_settings where setting~'pgsql';
Powinieneś również upewnić się, że katalog domowy Twojego użytkownika postgres jest tam, gdzie go oczekujesz. Mówię to, ponieważ łatwo jest to przeoczyć ze względu na fakt, że monit wyświetli '~
' zamiast rzeczywistej ścieżki katalogu domowego, co nie jest tak oczywiste. Wiele instalacja domyślnie domowy katalog użytkownika postgres ma wartość /var/lib/pgsql
.
Jeśli nie jest ustawiona na to, co ma być, Zatrzymaj usługę postgresql i użyj następującego polecenia, Gdy jesteś zalogowany jako root. Upewnij się również, że użytkownik postgres nie jest zalogowany do innej sesji:
usermod -d /path/pgsql postgres
Na koniec upewnij się, że zmienna PGDATA jest ustawiona poprawnie, wpisując echo $PGDATA
, co powinno wypisać coś podobnego do:
/path/pgsql/data
Jeśli nie jest ustawiony, lub pokazuje coś innego niż to, co Ty spodziewaj się tego, Sprawdź swoje pliki startowe lub RC, takie jak .profil lub .bash.rc-to będzie się znacznie różnić w zależności od systemu operacyjnego i powłoki. Po określeniu WŁAŚCIWEGO skryptu startowego dla komputera można wstawić następujące:
export PGDATA=/path/pgsql/data
Dla mojego systemu, umieściłem to w /etc/profile.d/profile.local.sh
, aby było dostępne dla wszystkich użytkowników.
Powinieneś teraz mieć możliwość init bazy danych jak zwykle i wszystkie ustawienia ścieżki psql powinny być poprawne!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-20 20:34:51
Mój problem polegał na tym, że nie wpisałem żadnego serwera. Myślałem, że jest to domyślne z powodu placeholder, ale kiedy wpisałem localhost to działało.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-12 12:25:53
Jeśli próbujesz zlokalizować ten plik w chmurze 9, możesz zrobić
sudo vim /var/lib/pgsql9/data/pg_hba.conf
Naciśnij I
Aby edytować / wstawić, naciśnij ESC
3 razy i wpisz :wq
zapisze plik i zakończy
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-29 19:17:04
Jeśli borykasz się z tym problemem z rails i wiesz, że już utworzyłeś tę nazwę Użytkownika z hasłem wraz z poprawnymi prawami, musisz po prostu umieścić following na końcu swojej bazy danych.plik yml.
host: localhost
Ogólny plik będzie wyglądał jak poniżej
development:
adapter: postgresql
encoding: unicode
database: myapp_development
pool: 5
username: root
password: admin
host: localhost
Nie musisz w ogóle dotykać pliku. Happy codingWarning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-04 19:11:54