Не могу войти в phpPgAdmin


10

Я пытаюсь настроить phpPgAdmin на моей тестовой машине, чтобы я мог взаимодействовать с PostgreSQL без необходимости использовать psqlCLI. У меня PostgreSQL 9.1 установлен через репозиторий RPM, а я установил phpPgAdmin 5.0.4 «вручную» (извлекая архив с сайта phpPgAdmin). Для справки, моей операционной системой является 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). Я попытался выполнить некоторые из шагов, отмеченных в Вопросе 3 в FAQ , но пока что это не сработало. Вероятно, не поможет, что это мой первый день работы с PostgreSQL. Я хорошо знаком с MySQL, но мне нужно использовать PostgreSQL для проекта, над которым я работаю.

Может кто-нибудь предложить некоторую помощь по настройке phpPgAdmin на CentOS 6.2? Если я до сих пор сделал что-то ужасно неправильное в моей конфигурации, нет ничего страшного в том, чтобы скинуть что-то / все, потому что я не храню там никаких данных!

Я ценю любое понимание, которое вы можете иметь!

Ответы:


7

Ну, я понял это - это была комбинация неопытности с PostgreSQL и очень неописательных ошибок от phpPgAdmin.

Оказывается, у меня не был включен доступ по TCP / IP, что означало, что никакие приложения PHP не могли получить доступ к базе данных . Чтобы это исправить, мне пришлось сделать два изменения:

  • Казалось , работать лучше , если я ставлю 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.
пострациональное

Просто для пояснения: вам не обязательно нужен доступ по TCP / IP, чтобы phpPgAdmin (или другие сценарии PHP) могли подключаться к Postgres, если вы находитесь на том же сервере, вы можете в качестве альтернативы подключиться через локальный сокет unix. Вы все еще, вероятно, столкнулись бы с проблемами, связанными с 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.