Не вдається увійти до 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. Насправді він відмовився починати після того, як я додав це. Тож не робіть цього.

У будь-якому випадку, сподіваюся, це може допомогти тому, хто стикається з тими ж проблемами, що і я!


У системах з Linux 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 та ввели пароль при першому вході, це пароль, який ви використовуєте для користувальницьких поштових повідомлень . Тепер у 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.