Không thể đăng nhập vào phpPgAdmin


10

Tôi đang cố gắng thiết lập phpPgAdmin trên máy thử nghiệm của mình để tôi có thể giao tiếp với PostgreQuery mà không phải luôn sử dụng psqlCLI. Tôi đã cài đặt PostgreQuery 9.1 qua kho lưu trữ RPM, trong khi tôi cài đặt phpPgAdmin 5.0.4 "thủ công" (bằng cách trích xuất kho lưu trữ từ trang web phpPgAdmin). Đối với bản ghi, hệ điều hành máy chủ của tôi là CentOS 6.2.

Tôi đã thực hiện các thay đổi cấu hình sau đây:

PostgreSQL

  • Bên trong pg_hba.conf, tôi đã thay đổi tất cả METHODs thành md5.
  • Tôi đã cho mật khẩu tài khoản postgres
  • Tôi đã thêm một tài khoản mới có tên webuser bằng mật khẩu (lưu ý rằng tôi không làm gì khác với tài khoản, vì vậy tôi không thể nói chính xác rằng tôi biết nó có quyền gì và tất cả)

phpPgAdmin config.inc.php

  • Đã thay đổi dòng $conf['servers'][0]['host'] = '';thành $conf['servers'][0]['host'] = '127.0.0.1';(Tôi cũng đã thử sử dụng localhost làm giá trị ở đó).
  • Đặt $conf['extra_login_security']thành false.

Bất cứ khi nào tôi cố gắng đăng nhập vào phpPgAdmin, tôi sẽ nhận được "Đăng nhập thất bại", ngay cả khi tôi sử dụng thông tin đăng nhập thành công (những thông tin hoạt động psql). Tôi đã cố gắng thực hiện một số bước được ghi chú trong Câu hỏi 3 trong Câu hỏi thường gặp , nhưng cho đến nay nó vẫn chưa hoạt động tốt. Có vẻ như đây không phải là ngày đầu tiên tôi làm việc với PostgreSQL. Tôi đã quá quen thuộc với MySQL, nhưng tôi phải sử dụng PostgreSQL cho dự án mà tôi đang thực hiện.

Bất cứ ai cũng có thể cung cấp một số trợ giúp về cách thiết lập phpPgAdmin trên CentOS 6.2? Nếu tôi đã làm một cái gì đó cực kỳ sai trong cấu hình của tôi cho đến nay, thì sẽ không có vấn đề gì lớn để thổi bay thứ gì đó / mọi thứ, vì nó không giống như tôi đã lưu trữ bất kỳ dữ liệu nào ở đó!

Tôi đánh giá cao bất kỳ cái nhìn sâu sắc mà bạn có thể có!

Câu trả lời:


7

Chà, tôi đã hiểu ra rồi - đó là sự kết hợp thiếu kinh nghiệm với PostgreSQL và các lỗi không mô tả từ phpPgAdmin.

Hóa ra tôi không kích hoạt truy cập TCP / IP, điều đó có nghĩa là không có ứng dụng PHP nào có thể truy cập (các) cơ sở dữ liệu . Để khắc phục điều này, tôi đã phải thực hiện hai thay đổi:

  • Nó dường như làm việc tốt hơn nếu tôi đặt listen_addressesđể '*'postgresql.conf. Tôi không chắc điều đó có hoàn toàn cần thiết hay không, nhưng trên một chiếc máy được tường lửa tốt như cái này thì nó không phải là vấn đề.
  • Tôi đã phải chạy lệnh setsebool -P httpd_can_network_connect_db 1từ một cửa sổ đầu cuối để khiến Apache thực sự có được chương trình và kết nối. Tôi không nhớ nếu tôi phải khởi động lại PostgreSQL sau bước này, nhưng có lẽ điều đó sẽ không gây hại.

Một lưu ý cuối cùng: Tôi thấy một vài điều gợi ý thay đổi một dòng tcpip_socket=truetrong postgresql.conf. Điều này dường như không hoạt động trong PostgreQuery 9.1. Trong thực tế, nó đã từ chối bắt đầu sau khi tôi thêm điều đó. Vì vậy, đừng làm điều đó.

Dù sao, hy vọng điều này có thể giúp ai đó gặp phải vấn đề tương tự tôi đã làm!


Trên các hệ thống có Linux được tăng cường bảo mật (SELinux), việc cài đặt httpd_can_network_connect_dbcờ setseboollà cần thiết.
hậu kỳ

Để làm rõ, bạn không nhất thiết phải kích hoạt truy cập TCP / IP để có được phpPgAdmin (hoặc các tập lệnh PHP khác) để kết nối với Postgres nếu bạn ở trên cùng một máy chủ, bạn có thể như một kết nối thay thế thông qua ổ cắm unix cục bộ. Có lẽ bạn vẫn có thể gặp phải các vấn đề liên quan đến SELinux.
xzilla

0

Tôi không thể thiết lập phpPgAdmin cho đến khi tôi thấy giải pháp của bạn. Để hoàn thành giải pháp của bạn:

  • Sẽ không hữu ích khi đặt listen_addressthành '*'nếu máy chủ phpPgAdmin của bạn ở trên cùng một máy tính so với máy chủ postgresql của bạn (9.2 đối với tôi), bạn có thể đặt nó thành localhost.
  • điều duy nhất hữu ích là thiết lập boolean SELinux.

0

Tôi đã thử giải pháp trên nhưng vẫn nhận được thông báo 'Đăng nhập thất bại'. Để giải quyết, tôi phải đảm bảo IPv6 cũng được đặt passwordtrong pg_hba.conftệp. Vì vậy, làm: vi /var/lib/pgsql/9.4/data/pg_hba.confvà chỉnh sửa cho phù hợp. Sau đó khởi động lại cả httpd & postgresql (bất kể phiên bản bạn đang sử dụng)


0

Vâng, người dùng mặc định là postgres và không có mật khẩu cài đặt mới. Vì vậy, trong hộp người dùng đặt cái này và xóa hộp mật khẩu. Nhấp chuột. làm xong.

Nếu bạn đã sử dụng pgAdmin4 và nhập mật khẩu trong lần đăng nhập đầu tiên, đó là mật khẩu bạn sử dụng cho các postgres của người dùng . Bây giờ trong phppgadmin gõ postgres là tên người dùng và mật khẩu đó trong hộp mật khẩu. Nhấp chuột. Làm xong. Cảm ơn bạn


0

Chạy trên máy chủ có GitLab-CE , thông báo tôi nhận được trên tệp nhật ký là:

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"

vì vậy, tôi kết nối psqlqua cli và tạo vai trò / người dùng bị thiếu (trong trường hợp của tôi gitlab-www):

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

Và sau đó, quá trình đăng nhập mở ra.


Nói chung, xác thực ngang hàng sẽ giới hạn người dùng nhất định chỉ có thể truy cập Postgres thông qua dòng lệnh (như với psql) và thường sẽ không hoạt động với phpPgAdmin. Tạo một người dùng mới là một giải pháp tốt, nhưng bạn cũng có thể thay đổi phương thức xác thực trong pg_hba.conf.
xzilla
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.