Tidak Dapat Masuk ke phpPgAdmin

10

Saya mencoba mengatur phpPgAdmin pada mesin pengujian saya sehingga saya dapat berinteraksi dengan PostgreSQL tanpa harus selalu menggunakan psqlCLI. Saya memiliki PostgreSQL 9.1 diinstal melalui repositori RPM, sementara saya menginstal phpPgAdmin 5.0.4 "secara manual" (dengan mengekstrak arsip dari situs web phpPgAdmin). Sebagai catatan, OS host saya adalah CentOS 6.2.

Saya sudah melakukan perubahan konfigurasi berikut:

PostgreSQL

  • Di dalam pg_hba.conf, saya mengubah semua METHODs ke md5.
  • Saya memberi kata sandi akun postgres
  • Saya menambahkan akun baru bernama webuser dengan kata sandi (perhatikan bahwa saya tidak melakukan hal lain ke akun tersebut, jadi saya tidak bisa mengatakan dengan tepat bahwa saya tahu izin apa yang dimilikinya dan semua)

phpPgAdmin config.inc.php

  • Mengubah baris $conf['servers'][0]['host'] = '';menjadi $conf['servers'][0]['host'] = '127.0.0.1';(Saya juga mencoba menggunakan localhost sebagai nilai di sana).
  • Setel $conf['extra_login_security']ke false.

Setiap kali saya mencoba masuk ke phpPgAdmin, saya mendapatkan "Gagal masuk", walaupun saya menggunakan kredensial yang berhasil (yang berfungsi psql). Saya sudah mencoba melalui beberapa langkah yang disebutkan dalam Pertanyaan 3 di FAQ , tetapi sejauh ini tidak berhasil. Sepertinya tidak membantu bahwa ini adalah hari pertama saya bekerja dengan PostgreSQL. Saya sudah terbiasa dengan MySQL, tetapi saya harus menggunakan PostgreSQL untuk proyek yang sedang saya kerjakan.

Adakah yang bisa menawarkan bantuan untuk cara mengatur phpPgAdmin di CentOS 6.2? Jika saya telah melakukan sesuatu yang sangat salah dalam konfigurasi saya sejauh ini, bukan masalah besar untuk meledakkan sesuatu / semuanya, karena saya belum menyimpan data apa pun di sana!

Saya menghargai wawasan apa pun yang Anda miliki!

Devin
sumber

Jawaban:

7

Yah, saya menemukan jawabannya - itu adalah kombinasi dari pengalaman dengan PostgreSQL dan kesalahan yang sangat non-deskriptif dari phpPgAdmin.

Ternyata saya tidak mengaktifkan akses TCP / IP, yang berarti tidak ada aplikasi PHP yang bisa mengakses basis data . Untuk memperbaikinya, saya harus membuat dua perubahan:

  • Tampaknya untuk bekerja lebih baik jika saya mengatur listen_addressesuntuk '*'di postgresql.conf. Saya tidak yakin apakah itu sepenuhnya perlu atau tidak, tetapi pada mesin dengan firewall yang baik seperti ini, itu seharusnya tidak menjadi masalah.
  • Saya harus menjalankan perintah setsebool -P httpd_can_network_connect_db 1dari jendela terminal untuk mendapatkan Apache agar benar-benar dapat dengan program dan terhubung. Saya tidak ingat apakah saya harus me-restart PostgreSQL setelah langkah ini, tetapi mungkin tidak ada salahnya.

Satu catatan terakhir: saya melihat beberapa hal menyarankan mengubah garis tcpip_socket=truedi postgresql.conf. Ini tampaknya tidak berfungsi di PostgreSQL 9.1. Bahkan, ia menolak untuk memulai setelah saya menambahkan itu. Jadi jangan lakukan itu.

Bagaimanapun, semoga ini dapat membantu seseorang yang mengalami masalah yang sama dengan saya!

Devin
sumber
Pada sistem dengan Security Enhanced Linux (SELinux), pengaturan httpd_can_network_connect_dbflag dengan setsebooldiperlukan.
pasca
Hanya untuk memperjelas, Anda tidak perlu mengaktifkan akses TCP / IP untuk mendapatkan phpPgAdmin (atau skrip PHP lainnya) untuk terhubung ke Postgres jika Anda berada di server yang sama, Anda dapat sebagai koneksi alternatif melalui soket unix lokal. Anda mungkin masih mengalami masalah terkait SELinux.
xzilla
0

Saya tidak dapat mengatur phpPgAdmin sampai saya melihat solusi Anda. Untuk melengkapi solusi Anda:

  • tidak berguna untuk set listen_addresske '*'jika server phpPgAdmin Anda pada komputer yang sama dari server yang postgresql Anda (9,2 untuk saya), Anda dapat mengaturnya untuk localhost.
  • satu-satunya hal yang berguna adalah mengatur boolean SELinux.
pengguna176931
sumber
0

Saya mencoba solusi di atas tetapi masih mendapat pesan 'Login Gagal'. Untuk menyelesaikannya, saya harus memastikan IPv6 juga diatur ke passworddalam pg_hba.conffile. Jadi lakukan: vi /var/lib/pgsql/9.4/data/pg_hba.confdan edit sesuai. Kemudian restart httpd & postgresql (apa pun versi yang Anda gunakan)

Olu
sumber
0

Nah, pengguna default adalah postgres dan tidak ada kata sandi instalasi baru. Jadi di kotak pengguna taruh ini dan kosongkan kotak kata sandi. Klik. selesai

Jika Anda menggunakan pgAdmin4 dan memasukkan kata sandi pada login pertama, itu adalah kata sandi yang Anda gunakan untuk postgres pengguna . Sekarang di phppgadmin ketik postgres sebagai nama pengguna dan kata sandi itu di kotak kata sandi. Klik. Selesai Terima kasih

NetBug
sumber
0

Berjalan di server dengan GitLab-CE , pesan yang saya terima pada file log adalah:

tail -f -n 8 /var/log/postgresql/postgresql-*-main.log
......
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 LOG:  provided user name (postgres) and authenticated user name (gitlab-www) do not match
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 FATAL:  Peer authentication failed for user "postgres"
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 DETAIL:  Connection matched pg_hba.conf line 85: "local   all             postgres                                peer"

jadi, saya terhubung ke psqlvia cli dan membuat peran / pengguna yang hilang (dalam kasus saya gitlab-www):

# sudo -u postgres psql
CREATE USER "gitlab-www" WITH PASSWORD 'YouKnow..' CREATEDB CREATEROLE SUPERUSER LOGIN;

Dan kemudian, proses login membuka pintunya.

fcm
sumber
Secara umum, otentikasi rekan akan membatasi pengguna yang diberikan hanya untuk dapat mengakses Postgres melalui baris perintah (seperti dengan psql), dan biasanya tidak akan berfungsi dengan phpPgAdmin. Membuat pengguna baru adalah solusi yang bagus, tetapi Anda juga bisa mengubah metode otentikasi di pg_hba.conf.
xzilla