phpPgAdmin에 로그인 할 수 없습니다


10

psqlCLI 를 항상 사용하지 않고도 PostgreSQL과 인터페이스 할 수 있도록 테스트 시스템에서 phpPgAdmin을 설정하려고합니다 . RPM 저장소를 통해 PostgreSQL 9.1을 설치하고 phpPgAdmin 5.0.4를 "수동으로"설치했습니다 (phpPgAdmin 웹 사이트에서 아카이브를 추출하여). 기록상 호스트 OS는 CentOS 6.2입니다.

이미 다음과 같은 구성을 변경했습니다.

PostgreSQL

  • 내부 pg_hba.conf에서 모든 METHODs를 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됩니다. FAQ의 질문 3에 언급 된 단계 중 일부를 시도했지만 지금까지 제대로 작동하지 않았습니다. 이것이 PostgreSQL로 작업하는 첫날이라는 데 도움이되지 않을 것입니다. 나는 MySQL에 대해 매우 친숙하지만 작업중 인 프로젝트에 PostgreSQL을 사용해야합니다.

CentOS 6.2에서 phpPgAdmin을 설정하는 방법에 대한 도움을 줄 수 있습니까? 지금까지 구성에서 끔찍한 잘못을 저지른 경우 아직 데이터를 저장하지 않은 것처럼 무언가를 날려 버리는 것은 큰 의미가 없습니다!

당신이 가진 통찰력에 감사드립니다!

답변:


7

글쎄, 나는 PostgreSQL의 경험과 phpPgAdmin의 매우 비 설명적인 오류의 조합이라는 것을 알았습니다.

TCP / IP 액세스가 활성화되어 있지 않기 때문에 PHP 응용 프로그램이 데이터베이스에 액세스 할 수 없습니다 . 이 문제를 해결하려면 두 가지 사항을 변경해야했습니다.

  • 그것은 더 나은 내가 설정 한 경우 일 것 같았다 listen_addresses'*'에서 postgresql.conf. 이것이 완전히 필요한지 확실하지 않지만이 방화벽과 같은 잘 방화벽이있는 컴퓨터에서는 문제가되지 않습니다.
  • setsebool -P httpd_can_network_connect_db 1Apache가 실제로 프로그램을 사용하여 연결하도록 터미널 창에서 명령을 실행해야했습니다 . 이 단계 후에 PostgreSQL을 다시 시작해야했는지 기억이 나지 않을 것입니다.

마지막 참고 사항 :에서 줄 tcpip_socket=true을 바꿀 것을 제안하는 몇 가지 사항을 보았습니다 postgresql.conf. 이것은 PostgreSQL 9.1 에서는 작동하지 않습니다 . 사실, 그것을 추가 한 후에는 시작을 거부했습니다. 그러지 마

어쨌든, 이것이 내가 한 것과 같은 문제에 부딪 치는 사람을 도울 수 있기를 바랍니다!


SELinux (Security Enhanced Linux)가있는 시스템에서는 httpd_can_network_connect_db플래그를 설정 setsebool해야합니다.
postrational

명확히하기 위해, 동일한 서버에있는 경우 phpPgAdmin (또는 다른 PHP 스크립트)이 Postgres에 연결하기 위해 TCP / IP 액세스가 활성화되어 있어야 할 필요는 없으며 로컬 유닉스 소켓을 통해 대안으로 연결할 수 있습니다. 그래도 여전히 SELinux 관련 문제가 발생할 수 있습니다.
xzilla

0

솔루션을 볼 때까지 phpPgAdmin을 설정할 수 없습니다. 솔루션을 완료하려면 다음을 수행하십시오.

  • phpPgAdmin 서버가 postgresql 서버 (9.2)와 동일한 컴퓨터에 있으면 설정 listen_address하는 것이 유용하지 않습니다 .'*'localhost
  • 유용한 유일한 것은 SELinux 부울을 설정하는 것입니다.

0

위의 솔루션을 시도했지만 여전히 '로그인 실패'메시지가 나타납니다. 해결하려면 파일 password에서 IPv6도 설정해야 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"

그래서 psqlcli 를 통해 연결 하고 누락 된 역할 / 사용자 (제 경우 gitlab-www)를 만듭니다 .

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

그런 다음 로그인 프로세스가 문을 엽니 다.


일반적으로 피어 인증은 지정된 사용자가 명령 줄 (psql과 같은)을 통해서만 Postgres에 액세스 할 수 있도록 제한하며 일반적으로 phpPgAdmin에서 작동하지 않습니다. 새로운 사용자를 생성하는 것은 훌륭한 해결책이지만 pg_hba.conf에서 인증 방법을 변경할 수도 있습니다.
xzilla
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.