Pertanyaan Mendapatkan kesalahan: Otentikasi rekan gagal untuk "postgres" pengguna, ketika mencoba untuk mendapatkan pgsql bekerja dengan rel


Saya mendapatkan

FATAL: Peer authentication failed for user "postgres"

ketika saya mencoba untuk membuat postgres bekerja dengan Rails.

Inilah saya pg_hba.conf, saya database.yml, dan a dump dari jejak penuh.

Saya mengubah otentikasi ke md5 di pg_hba dan mencoba berbagai hal, tetapi tidak ada yang berfungsi.

Saya juga mencoba membuat pengguna baru dan basis data sesuai Rails 3.2, FATAL: Otentikasi rekan gagal untuk pengguna (PG :: Error)

Tetapi mereka tidak muncul di pgadmin atau bahkan ketika saya berlari sudo -u postgres psql -l

Tahu di mana saya salah?


485
2017-09-06 18:15


asal


Jawaban:


Masalahnya masih Anda pg_hba.conf file (/etc/postgresql/9.1/main/pg_hba.conf). Garis ini:

local   all             postgres                                peer

Seharusnya

local   all             postgres                                md5

Setelah mengubah file ini, jangan lupa untuk me-restart server PostgreSQL Anda. Jika Anda menggunakan Linux, itu akan menjadi sudo service postgresql restart.

Ini adalah deskripsi singkat dari kedua opsi sesuai dengan dokumen PostgreSQL resmi tentang metode autentikasi.

Otentikasi rekan

Metode otentikasi sejawat berfungsi dengan cara mendapatkan klien   nama pengguna sistem operasi dari kernel dan menggunakannya sebagai yang diizinkan   nama pengguna basis data (dengan pemetaan nama pengguna opsional). Metode ini   hanya didukung pada koneksi lokal.

Otentikasi kata sandi

Metode otentikasi berbasis kata kunci adalah md5 dan kata sandi. Ini   metode beroperasi dengan cara yang sama kecuali cara pengiriman kata sandi   di koneksi, yaitu MD5-hashed dan clear-text masing-masing.

Jika Anda prihatin tentang serangan "sniffing" kata sandi, maka md5   lebih disukai. Kata sandi biasa harus selalu dihindari jika memungkinkan.   Namun, md5 tidak dapat digunakan dengan fitur db_user_namespace. Jika itu   koneksi dilindungi oleh enkripsi SSL maka kata sandi dapat digunakan   aman (meskipun otentikasi sertifikat SSL mungkin menjadi pilihan yang lebih baik   jika ada yang bergantung pada penggunaan SSL).

Lokasi contoh untuk pg_hba.conf

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


696
2017-09-06 18:25



Setelah menginstal Postgresql saya melakukan langkah-langkah di bawah ini.

  1. buka file pg_hba.conf untuk Ubuntu akan masuk /etc/postgresql/9.x/main dan ubah baris ini:
lokal semua rekan postgres

untuk

kepercayaan semua postgres lokal
  1. Mulai ulang server
sudo service postgresql restart
  1. Login ke psql dan atur kata sandi Anda

psql -U postgres

ALTER USER postgres with password 'your-pass';
  1. Akhirnya ubah pg_hba.conf dari
kepercayaan semua postgres lokal

untuk

lokal semua postgres md5

Setelah memulai ulang server postgresql, Anda dapat mengaksesnya dengan kata sandi Anda sendiri

Rincian metode otentikasi:

kepercayaan - siapa pun yang dapat terhubung ke server berwenang untuk mengakses database

peer - gunakan nama pengguna sistem operasi klien sebagai nama pengguna basis data untuk mengaksesnya.

md5 - otentikasi berbasis kata sandi

untuk referensi lebih lanjut periksa di sini


241
2017-11-04 12:25



Jika Anda terhubung melalui localhost (127.0.0.1) Anda seharusnya tidak mengalami masalah tertentu. Saya tidak akan banyak berkutat dengan pg_hba.conf tetapi saya akan menyesuaikan string koneksi Anda:

psql -U someuser -h 127.0.0.1 database

di mana someuser adalah pengguna Anda yang Anda hubungkan sebagai dan database adalah database pengguna Anda memiliki izin untuk terhubung.

Inilah yang saya lakukan di Debian untuk mengatur 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

Nikmati!


124
2018-02-28 15:51



Ini berhasil untuk saya !!

sudo -u postgres psql

17
2018-01-10 07:39



  1. Pergi ke ini /etc/postgresql/9.x/main/ dan terbuka pg_hba.conf mengajukan

Dalam hal ini:

$>  sudo nano /etc/postgresql/9.3/main/pg_hba.conf
  1. Menggantikan teman sejawat dengan md5

Jadi ini akan diubah menjadi:

Login administratif basis data dengan soket domain Unix     lokal semua rekan postgres

# 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

Ini:

Login administratif basis data dengan soket domain Unix     lokal semua 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. Kemudian restart pg server:

    $> layanan sudo postgresql restart

Di bawah ini adalah daftar METODE yang digunakan untuk terhubung dengan postgres:

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

catatan: Jika Anda belum membuat Anda postgres pengguna. Buat itu dan sekarang Anda dapat mengakses server postgres menggunakan kredensial pengguna itu.


14
2017-09-10 11:29



Jika Anda memiliki masalah, Anda perlu mencari lokasi Anda pg_hba.conf

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

dan ubah file konfigurasi:

Postgresql 9.3

Postgresql 9.3

Postgresql 9.4

Postgresql 9.3

Setelah itu Anda harus me-restart layanan postgresql

Contoh untuk postgresql 9.3

service postgresql-9.3 restart

Jika Anda memiliki masalah, Anda perlu mengatur kata sandi lagi:

ALTER USER db_user with password 'db_password';


12
2018-04-08 14:24



Saya memiliki masalah yang sama.

Solusi dari depa benar-benar benar.

Pastikan saja bahwa Anda memiliki pengguna yang dikonfigurasi untuk menggunakan PostgreSQL.

Periksa file:

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

Izin dari file ini harus diberikan kepada pengguna yang telah Anda daftarkan psql Anda.

Lebih lanjut. Jika kamu baik sampai sekarang ..

Perbarui sesuai instruksi @ depa.

yaitu

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

lalu buat perubahan.


10
2017-10-14 02:25



Hasil edit di atas bekerja untuk saya, setelah saya mengetahui bahwa saya perlu memulai ulang server postgres setelah membuatnya. Untuk ubuntu:

sudo /etc/init.d/postgresql restart

6
2017-08-25 21:42



Jika Anda ingin menyimpan konfigurasi default tetapi ingin otentikasi md5 dengan koneksi soket untuk satu koneksi pengguna / db tertentu, tambahkan baris "lokal" SEBELUM baris "lokal semua / semua":

# 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

6
2017-08-10 12:11



Saya memindahkan direktori data di server yang dikloning dan mengalami masalah untuk masuk sebagai postgres. Mengatur ulang kata sandi postgres seperti ini berhasil untuk saya.

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
2018-04-30 12:20