Alınmasıyla bağlı bir səhv: İstifadəçi üçün "pegql" ilə relslərlə işləmək istəyərkən "postgres"

Səhv alıram:

 FATAL: Peer authentication failed for user "postgres" 

Rails ilə işləmək üçün postgres almaq üçün çalışırıq.

Burada pg_hba.conf , my database.ymltam iz dump .

Mən pg_hba ildə md5 üçün autentifikasiya dəyişdi və müxtəlif şeylər cəhd, lakin heç bir şey işləmək görünür.

Mən də Rails 3.2, FATAL uyğun olaraq yeni bir istifadəçi və məlumat bazası yaratmağa çalışdım : müvəqqəti istifadəçi identifikasiyası (PG :: Error)

Amma onlar pgadmin-də göstərilmir və ya sudo -u postgres psql -l çalıştırdığımda bile.

Yanlış gedirəm hər hansı fikir?

526
06 сент. Sifariş qaydası1 06 sept. 2013-09-06 21:15 '13 saat 21:15 'də 2013-09-06 21:15
@ 18 cavab

Problem hələ də pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf*) içindədir. Bu xətt:

 local all postgres peer 

Olmalıdır

 local all postgres md5 

* Əgər bu faylı tapa locate pg_hba.conf , locate pg_hba.conf faylın harada yerləşdiyini göstərəcəkdir.

Bu faylı dəyişdikdən sonra PostgreSQL serverinizi yenidən başladın. Linux'u çalıştırıyorsanız, bu, sudo service postgresql restart olacaq.

PostgreSQL rəsmi sənədlərinə uyğun olaraq hər iki variantın qısa təsviri autentifikasiya metodları ilə bağlıdır .

Peer to Peer Authentication

Peer-to-peer kimlik doğrulama metodu, istemcinin işletim sisteminin istifadəçi adını çekirdekten alınarak ve izin verilmiş bir verilənlər bazası istifadəçi adı olaraq istifadə edir (istifadəçi adının isteğe bağlı görüntüsü ile). Bu üsul yalnız yerli əlaqələrdə dəstəklənir.

Şifrənin təsdiqlənməsi

Şifrə əsaslı autentifikasiya metodları md5 və şifrədir. Bu üsullar, parolun keçid üzərində ötürüldüyü istisna olmaqla, eyni şəkildə işləyir, yəni sırasıyla MD5-hashed və düz metin.

Şifrənizlə "hücum" ilə hücumlardan narahat olduqda, md5 üstünlük təşkil edir. Mümkünsə sadə bir şifrə həmişə yol verilməməlidir. Lakin, md5 db_user_namespace funksiyası ilə istifadə edilə bilməz. Bağlantı SSL şifrələməsi ilə qorunursa, parol SSL-nin istifadəsindən asılı olsa, SSL sertifikatının təsdiqlənməsi ən yaxşı seçim olmasına baxmayaraq təhlükəsiz istifadə oluna bilər.

pg_hba.conf üçün nümunə yeri

/etc/postgresql/9.1/main/pg_hba.conf

774
06 сент. Cavab verildi 06 sentyabr. 2013-09-06 21:25 '13 at 21:25 2013-09-06 21:25

Postgresql'i qurduqdan sonra aşağıdakı addımları atdım.

  • Ubuntu üçün pg_hba.conf açın, pg_hba.conf olacaq və bu /etc/postgresql/9.x/main dəyişdirin:
  yerli bütün postgres peer 

üçün

  yerli bütün postgres güvən 
  1. Reboot server
 sudo service postgresql restart 
  1. Psql-ə daxil olun və parolunuzu təyin edin.

psql -u postgres

border=0
 ALTER USER postgres with password 'your-pass'; 
  1. Nəhayət, pg_hba.conf
  yerli bütün postgres güvən 

üçün

  yerli bütün postgres md5 

Postgresql serverini yenidən başlatdıqdan sonra, öz parolunuzla istifadə edə bilərsiniz.

Doğrulama məlumatları:

etibar - serverə qoşula bilən hər kəs veritabanına daxil olmaq hüququna malikdir

müştəri əməliyyat sisteminin peer istifadəçi adı istifadə etmək üçün verilənlər bazası istifadəçi adı.

md5 - parol əsaslı identifikasiyası

Burada daha çox kömək üçün .

258
04 нояб. Cavab Arivarasan L 04 noyabrda verilir. 2014-11-04 15:25 '14 da 15:25 2014-11-04 15:25

Əgər siz localhost (127.0.0.1) vasitəsilə əlaqə qurursanız, bu problemi yaşamayacaqsınız. Mən pg_hba.conf ilə merak etməzdim, amma bununla bağlı olaraq mən sizin əlaqə dizinizi düzəldərdim:

 psql -U someuser -h 127.0.0.1 database 

bəzi istifadəçi sizin bağladığınız istifadəçinizdir və verilənlər bazası, istifadəçinin əlaqə qurma icazəsi olan verilənlər bazasıdır.

Postgres quraşdırmaq üçün Debian'da bunu edirəm:

 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 

Enjoy!

139
28 февр. Cavab StylusEater 28 feb tərəfindən verilir . 2015-02-28 18:51 '15 at 18:51 2015-02-28 18:51

Mənim üçün çalışdı!

 sudo -u postgres psql 
21
10 янв. İamuser2 tərəfindən verilmiş cavab 10 yanvar 2018-01-10 10:39 '18 at 10:39 2018-01-10 10:39
  1. /Etc/postgresql/9.x/main/ səhifəsinə keçinpg_hba.conf faylını açın

Mənim vəziyyətimdə:

 $> sudo nano /etc/postgresql/9.3/main/pg_hba.conf 
  1. Eşini md5 ilə dəyişdirin

Beləliklə, bu dəyişəcək:

Unix domain socket istifadə edərək verilənlər bazasına administrasiya giriş yerli bütün pegres 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 

Bu,

Unix domen socketi vasitəsilə verilənlər bazasına administrasiya girişi yerli bütün 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 
  1. Sonra pg server yenidən başladın:

    $> yenidən başladıktan sonra sudo xidmətini yenidən başladın

Aşağıdakı postgreslərə qoşulmaq üçün istifadə edilən üsulların siyahısı:

 # 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. 

Qeyd Bir postgres istifadəçi yaratmadıysanız. Yaradın və indi bu istifadəçi etimadnaməsini istifadə edərək postgres serverə daxil ola bilərsiniz.

İPUCU: Postgres yenidən başladıldıqdan sonra işləmirsə, terminalı bağlayın və yenidən açın.

14
10 сент. Taimoor Changaiz tərəfindən verilmiş cavab 10 sentyabr 2015-09-10 14:29 '15 at 14:29 2015-09-10 14:29

Bir probleminiz varsa, pg_hba.conf tapmaq lazımdır. Komanda:

find / -name 'pg_hba.conf' 2>/dev/null

sonra konfiqurasiya faylını dəyişdirin:

Postgresql 9.3

2019

13
08 апр. Cavab verilir d.danailov 08 apr. 2015-04-08 17:24 '15 at 17:24 2015-04-08 17:24

Eyni problemim vardı.

Deponun qərarı tamamilə doğrudur.

Istifadəçi PostgreSQL'i istifadə etmək üçün konfiqurasiya olunduğundan əmin olun.

Faylı yoxlayın:

 $ ls /etc/postgresql/9.1/main/pg_hba.conf -l 

Bu faylın icazəsi psql-ə qeydə alınmış istifadəçiyə verilməlidir.

İrəli. Bu günə qədər varsa ..

@Depa talimatlarına uyğun olaraq yeniləyin.

yəni.

 $ sudo nano /etc/postgresql/9.1/main/pg_hba.conf 

və sonra dəyişikliklər etmək.

10
14 окт. cavab 14 aya qədər nirvanastack verilir . 2013-10-14 05:25 '13 'da 5:25 ' da 2013-10-14 05:25

Standart konfiqurasiyanı saxlamaq istəyirsinizsə, ancaq md5 kimlik doğrulamasını xüsusi bir istifadəçi / db bağlantısı üçün bir yuva bağlantısı ile isterseniz, "local" linki əlavə edin FULL 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 
7
10 авг. Åmunmun tərəfindən verilmiş cavab 10 avqu . 2016-08-10 15:11 '16 at 15:11 2016-08-10 15:11

Verilən kataloqları klonlanan serverə köçürdüm və postgres kimi qeydiyyatdan keçirdikdə problemlər yarandı. Postgres parolunu mənim üçün çalışdığına görə bərpa edin.

root# su postgres postgres$ psql -U postgres psql (9.3.6) Type "help" for help. postgres=#\password Enter new password: Enter it again: postgres=#

6
30 апр. Luca Marletta tərəfindən 30 apreldə cavab verildi 2015-04-30 15:20 '15 'də 15:20' de 2015-04-30 15:20

Bağlantıda host=localhost istifadə edin.

 PGconn *conn = PQconnectdb( "host=localhost user=postgres dbname=postgres password=123" ); 
6
21 июля '16 в 12:13 2016-07-21 12:13 Cavab Manisha Vasani tərəfindən 21 İyul '16' da 12:13 2016-07-21 12:13 'də verilir

Yuxarıda redaktorlar yaradıldıqdan sonra postgres serverini yenidən başlatmalı olduğumu başa düşdükdən sonra mənim üçün çalışdı. Ubuntu üçün:

 sudo /etc/init.d/postgresql restart 
6
26 авг. Cavab sibosop 26 avqustda verilir . 2015-08-26 00:42 '15 at 0:42 2015-08-26 00:42

Peer metoduna pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | line 85) əməl etmək üçün dəyişdirilməsi problemi həll edir. Md5-i əlavə etmək şifrəni soruşur, belə ki, parollardan istifadə etməmək üçün bir tələb varsa, md5 əvəzinə güvənməyin .

5
03 февр. Supun Muthutantrige tərəfindən verilmiş cavab 03 fevral. 2017-02-03 08:40 '17 də 8:40 'də 2017-02-03 08:40' a qədər

Aşağıdakı əmr mənim üçün işləyir:

 psql -d myDb -U username -W 
4
16 марта '15 в 13:27 2015-03-16 13:27 Cavab Mazen Ora tərəfindən 16 mart 'da 13:27' də verilir 2015-03-16 13:27

Yalnız etibar etmək üçün bir üsul qurmalısınız.

 #TYPE DATABASE USER ADDRESS METHOD local all all trust 

Postgres server yenidən başladın.

 # service postgresql-9.5 reload 

Pg_hba.conf dəyişiklikləri postgres RESTART server tələb etmir. yalnız RELOAD.

3
14 июня '16 в 16:11 2016-06-14 16:11 Alexandr Zaichenkonun 14 İyun tarixində 16:11 'də verdiyi cavabdan sonra 2016-06-14 16:11

Bir çox digər cavab müxtəlif konfiqurasiya faylları ilə bağlıdır və pg_hba.conf ilə əlaqəli olanlar tətbiq edilir və 100% düzgündür. Düzgün konfiqurasiya fayllarını dəyişdiyinizdən əmin olun.

Artıq qeyd olunduğu kimi, konfiqurasiya fayllarının yeri əsas konfiqurasiya faylınındakı müxtəlif parametrlər tərəfindən ləğv edilə bilər və həmçinin, -D parametri ilə əmr satırında əsas konfiqurasiya faylının yolunu müəyyənləşdirə bilər.

Psql sessiyasında aşağıdakı komandanızı konfiqurasiya fayllarınızın oxunduğu yeri göstərmək üçün istifadə edə bilərsiniz (psql çalıştırabilirsiniz). Bu, bəzi insanlara kömək edə biləcək bir problem giderme addımıdır:

 select * from pg_settings where setting~'pgsql'; 

Postgres istifadəçinizin ev dizinini gözlədiyiniz yerdən də əmin olun. Bu barədə danışıram, çünki dəvətnaməniz ev dizininizin əvəzinə " ~ " göstərəcək, çünki bu çox qüsursuzdur, çünki o, bu qədər aydın deyil. Bir çox qurğu /var/lib/pgsql pgsql üçün default postgres istifadəçi ev kataloqunu istifadə edir.

Konfiqurasiya edilməmişsə, postgresql xidmətini dayandırın və root olaraq daxil edərkən aşağıdakı əmrləri istifadə edin. Həmçinin postgres istifadəçinin başqa bir sessiyaya daxil edilməməsini təmin edin:

 usermod -d /path/pgsql postgres 

Nəhayət, PGDATA dəyişəninizə echo $PGDATA yazaraq doğru bir şəkildə ayarlandığından əmin olun:

 /path/pgsql/data 

Quraşdırılmır və ya gözlədiyinizdən fərqli bir şey göstərmirsə, başlanğıc faylları və ya RC, məsələn .profile və ya .bash.rc kimi yoxlayın - bu OS və qabığınıza bağlı olaraq çox dəyişir. Kompüteriniz üçün düzgün script buraxılışını təyin etdikdən sonra aşağıdakıları əlavə edə bilərsiniz:

 export PGDATA=/path/pgsql/data 

Sistemim üçün, /etc/profile.d/profile.local.sh yerləşdirdim ki, bu, bütün istifadəçilər üçün əlçatan olsun.

İndi verilənlər bazasını hər zamanki kimi başlamalısınız və bütün psql yol parametrləri düzgün olmalıdır!

3
20 нояб. Cavab 20 noyabr tarixində verilir. 2017-11-20 23:34 '17 də 11:34 'da 2017-11-20 23:34

Mənim problemim tək bir server yığmamam idi. Mən yer tutucusu səbəbiylə bu default olduğunu düşünürdüm, lakin mən localhost yazdığımda, işləmişdir.

2
12 янв. Cavab Epsilon47 Yanvar 12 verilir 2018-01-12 15:25 '18 saat 15:25 'də 2018-01-12 15:25

Bu faylı Cloud 9'da tapmaq istəyirsinizsə, bunu edə bilərsiniz

 sudo vim /var/lib/pgsql9/data/pg_hba.conf 

Edit / əlavə etmək üçün I basın, 3 dəfə ESC düyməsini basın və daxil edin :wq faylı :wq

2
29 янв. Cavab Marshall Jan 29 verilir 2018-01-29 22:17 '18 at 10:17 pm 2018-01-29 22:17

Əgər bu rels problemi ilə qarşılaşırsınızsa və bu istifadəçi adını bir parol və düzgün icazələrlə yaratdığınızı bilirsinizsə, aşağıdakıları database.yml faylının sonuna əlavə etmək lazımdır.

 host: localhost 

ümumi fayl aşağıdakılara baxacaq

 development: adapter: postgresql encoding: unicode database: myapp_development pool: 5 username: root password: admin host: localhost 

pg_hba.conf toxunmaq lazım deyil. Uğurlu kodlaşdırma

1
23 марта '18 в 13:08 2018-03-23 13:08 Cavab ImranNaqvi'ye 23 Mart, '18 'də saat 13:08' də verilərək 2018-03-23 ​​13:08

Tags haqqında digər suallar və ya bir sual