ไม่สามารถเข้าสู่ phpPgAdmin


10

ฉันกำลังพยายามตั้งค่า phpPgAdmin บนเครื่องทดสอบของฉันเพื่อให้สามารถเชื่อมต่อกับ PostgreSQL ได้โดยไม่ต้องใช้psqlCLI ฉันติดตั้ง PostgreSQL 9.1 ผ่านที่เก็บ RPM แล้วในขณะที่ฉันติดตั้ง phpPgAdmin 5.0.4 "ด้วยตนเอง" (โดยการแยกไฟล์เก็บถาวรออกจากเว็บไซต์ phpPgAdmin) สำหรับบันทึกระบบปฏิบัติการโฮสต์ของฉันคือ CentOS 6.2

ฉันทำการเปลี่ยนแปลงการกำหนดค่าต่อไปนี้แล้ว:

PostgreSQL

  • ข้างในpg_hba.confฉันเปลี่ยนทั้งหมดMETHODเป็น md5
  • ฉันให้รหัสผ่านบัญชี postgres
  • ฉันเพิ่มบัญชีใหม่ชื่อ webuser ด้วยรหัสผ่าน (โปรดทราบว่าฉันไม่ได้ทำสิ่งใดกับบัญชีดังนั้นฉันจึงไม่สามารถพูดได้อย่างแน่นอนว่าฉันรู้ว่ามีสิทธิ์ใดบ้างและทั้งหมด)

phpPgAdmin config.inc.php

  • เปลี่ยนบรรทัด$conf['servers'][0]['host'] = '';เป็น$conf['servers'][0]['host'] = '127.0.0.1';(ฉันได้ลองใช้ localhost เป็นค่าที่นั่น)
  • ตั้งค่าการ$conf['extra_login_security']false

เมื่อใดก็ตามที่ฉันพยายามเข้าสู่ phpPgAdmin ฉันจะได้รับ "การเข้าสู่ระบบล้มเหลว" แม้ว่าฉันจะใช้ข้อมูลประจำตัวที่ประสบความสำเร็จ (คนที่ทำงานในpsql) ฉันได้ลองทำตามขั้นตอนบางอย่างที่ระบุไว้ในคำถาม 3 ในคำถามที่พบบ่อยแต่มันยังไม่ได้ผลเท่าที่ควร มันไม่น่าจะช่วยได้ว่านี่เป็นวันแรกที่ฉันทำงานกับ PostgreSQL ฉันคุ้นเคยกับ MySQL มาก แต่ฉันต้องใช้ PostgreSQL สำหรับโครงการที่ฉันกำลังทำอยู่

ใครช่วยเสนอวิธีการตั้งค่า phpPgAdmin บน CentOS 6.2 ถ้าฉันทำสิ่งผิดปกติอย่างมากในการกำหนดค่าของฉันจนถึงตอนนี้มันก็ไม่ใช่เรื่องใหญ่อะไรที่จะทำให้บางสิ่งบางอย่าง / ทุกอย่างหมดไปเพราะมันไม่เหมือนที่ฉันเก็บข้อมูลไว้ที่นั่น!

ฉันขอขอบคุณความเข้าใจที่คุณอาจมี!

คำตอบ:


7

ดีฉันคิดออก - มันเป็นการรวมกันของประสบการณ์กับ PostgreSQL และข้อผิดพลาดที่ไม่อธิบายจาก phpPgAdmin

จะเปิดออกผมไม่ได้มี TCP / IP ที่เปิดใช้งานการเข้าถึงซึ่งหมายความว่าไม่มีโปรแกรม PHP สามารถเข้าถึงฐานข้อมูล (s) ในการแก้ไขปัญหานี้ฉันต้องทำการเปลี่ยนแปลงสองอย่าง:

  • ดูเหมือนว่ามันจะทำงานดีกว่าถ้าผมตั้งlisten_addressesไปใน'*' postgresql.confฉันไม่แน่ใจว่าจำเป็นจริงๆหรือไม่ แต่ในเครื่องที่มีไฟร์วอลล์อย่างเช่นนี้จะไม่เป็นปัญหา
  • ฉันต้องเรียกใช้คำสั่งsetsebool -P httpd_can_network_connect_db 1จากหน้าต่างเทอร์มินัลเพื่อให้ Apache ได้รับจริงกับโปรแกรมและเชื่อมต่อ ฉันจำไม่ได้ว่าต้องรีสตาร์ท PostgreSQL หลังจากขั้นตอนนี้ แต่อาจไม่เจ็บ

หนึ่งบันทึกสุดท้าย: ผมเห็นบางสิ่งที่แสดงให้เห็นการเปลี่ยนแปลงบรรทัดในtcpip_socket=true postgresql.confเห็นได้ชัดว่าไม่ได้ทำงานใน PostgreSQL 9.1 ในความเป็นจริงมันปฏิเสธที่จะเริ่มหลังจากที่ฉันเพิ่มว่า ดังนั้นอย่าทำ

อย่างไรก็ตามหวังว่านี่จะช่วยให้คนที่เจอปัญหาเดียวกันกับฉันได้!


บนระบบที่มี Security Enhanced Linux (SELinux) จำเป็นต้องตั้งค่าhttpd_can_network_connect_dbแฟล็กด้วย setsebool
postrational

เพียงชี้แจงคุณไม่จำเป็นต้องเปิดใช้งานการเข้าถึง TCP / IP เพื่อรับ phpPgAdmin (หรือสคริปต์ PHP อื่น ๆ ) เพื่อเชื่อมต่อกับ Postgres หากคุณอยู่บนเซิร์ฟเวอร์เดียวกันคุณสามารถเชื่อมต่อผ่านซ็อกเก็ตยูนิกซ์ คุณอาจยังพบปัญหาที่เกี่ยวข้องกับ SELinux อยู่
xzilla

0

ฉันไม่สามารถตั้งค่า phpPgAdmin จนกว่าฉันจะเห็นวิธีแก้ปัญหาของคุณ วิธีแก้ปัญหาให้สมบูรณ์:

  • มันไม่ได้มีประโยชน์ไปยังชุดlisten_addressไป'*'ถ้าเซิร์ฟเวอร์ phpPgAdmin ของคุณอยู่ในคอมพิวเตอร์เครื่องเดียวกันกว่าเซิร์ฟเวอร์ PostgreSQL คุณ (9.2 สำหรับฉัน), localhostคุณสามารถตั้งค่าให้
  • สิ่งเดียวที่เป็นประโยชน์คือการตั้งค่าบูลีน SELinux

0

ฉันลองวิธีการแก้ปัญหาข้างต้น แต่ยังคงได้รับข้อความ 'การเข้าสู่ระบบล้มเหลว' ในการแก้ไขฉันต้องมั่นใจว่า IPv6 ได้รับการตั้งค่าเป็นpasswordในpg_hba.confไฟล์ด้วย ทำเช่นนั้นvi /var/lib/pgsql/9.4/data/pg_hba.confและแก้ไขให้ถูกต้อง จากนั้นรีสตาร์ททั้ง httpd & postgresql (ไม่ว่าคุณจะใช้เวอร์ชันใด)


0

ผู้ใช้เริ่มต้นคือpostgresและไม่มีรหัสผ่านสำหรับการติดตั้งใหม่ ดังนั้นในกล่องผู้ใช้ใส่สิ่งนี้และล้างกล่องรหัสผ่าน คลิก. เสร็จแล้ว

หากคุณใช้pgAdmin4และป้อนรหัสผ่านเมื่อเข้าสู่ระบบแรกที่เป็นรหัสผ่านที่คุณใช้สำหรับผู้ใช้postgres ตอนนี้ใน phppgadmin พิมพ์ postgres เป็นชื่อผู้ใช้และรหัสผ่านนั้นในกล่องรหัสผ่าน คลิก. เสร็จสิ้น ขอบคุณ


0

ทำงานบนเซิร์ฟเวอร์ที่มีGitLab-CEข้อความที่ฉันได้รับในไฟล์บันทึกคือ:

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"

ดังนั้นฉันเชื่อมต่อpsqlผ่านทาง cli และสร้างบทบาท / ผู้ใช้ที่หายไป (ในกรณีของฉันgitlab-www):

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

จากนั้นกระบวนการล็อกอินเปิดเป็นประตู


โดยทั่วไปการรับรองความถูกต้องแบบเพียร์จะ จำกัด ผู้ใช้ที่กำหนดให้สามารถเข้าถึง Postgres ผ่านบรรทัดคำสั่ง (เช่นเดียวกับ psql) เท่านั้นและโดยทั่วไปจะไม่ทำงานกับ phpPgAdmin การสร้างผู้ใช้ใหม่เป็นโซลูชั่นที่ดี แต่คุณสามารถเปลี่ยนวิธีการรับรองความถูกต้องใน pg_hba.conf
xzilla
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.