|
php, подключение к базе через pgbouncer и сокет
|
|||
---|---|---|---|
#18+
Добрый день. На старом железе тестовая система: centos8, nginx, php-fpm, postgresql-12, pgbouncer. Последний не получается настроить, точнее не работает через сокет (вариант_2): $dsn = "host=127.0.0.1 port=6432 dbname=postgres user=postgres password=***"; // 1. так работает $dsn = "host=/tmp port=6432 dbname=postgres user=postgres password=***"; // 2. не работает Код файла php простой - в таблицу базы вносятся тестовые данные: временные метки коннекта и инсертов ... Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Если 1-ый вариант отрабатывает: в таблицу базы вносятся тестовые данные, то 2-ой вариант или не даёт подключиться к базе, или ещё какая-то проблема. В логе такая ошибка: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
В терминале от пользователя nginx подключаюсь к базе pgbouncer так: sudo -u nginx psql -h /tmp -p 6432 -U postgres pgbouncer pgbouncer=# \conninfo Вы подключены к базе данных "pgbouncer" как пользователь "postgres" через сокет в "/tmp", порт "6432" pgbouncer=# show config; привёл в своём вопросе здесь: _sql.ru/forum/1325561/pgbouncer-nastroyka Также через терминал подключаюсь к базе postgres и могу вставить данные в таблицу: sudo -u nginx psql -h /tmp -p 6432 -U postgres postgres postgres=# \conninfo Вы подключены к базе данных "postgres" как пользователь "postgres" через сокет в "/tmp", порт "6432" Почему не могу подключиться через сокет скриптом_php (вариант_2)? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 15:10 |
|
php, подключение к базе через pgbouncer и сокет
|
|||
---|---|---|---|
#18+
Во втором варианте, где указан путь к сокету, номер TCP порта кажется лишним. Или я чего-то не понимаю. Без указания номера порта тоже не подключается? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 21:30 |
|
php, подключение к базе через pgbouncer и сокет
|
|||
---|---|---|---|
#18+
vkle, - это стандартные настройки, если не указать порт 6432, который имеет отношение к pgbouncer, то будет пытаться подключиться по сокету напрямую к базе postgres по порту 5432, а не транзитом например, здесь об этом напоминают: _sql.ru/forum/761008/pgbouncer-ne-rabotaet-cherez-unix-socket?hl=pgbouncer еще по теме: _sql.ru/forum/1315759/pgbouncer-c-auth-type-hba-govorit-vsegda-tolko-odno-login-rejected?hl=pgbouncer т.е. у меня и первый и второй варианты, - это клиент из браузера -> на связку: pgbouncer-postgresql а траблы только со вторым вариантом (по сокету), причем из кода php, т.к. из консоли по сокету работает но Ваш вариант, я пробовал перебирал ранее, - не сработает, - будет, как писал выше, хотя по теме плаваю и где-то точно накосячил спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 21:59 |
|
php, подключение к базе через pgbouncer и сокет
|
|||
---|---|---|---|
#18+
vkle, - вот, если бы были проблемы с правами или, например, отсутствовала какая-то библиотека (аля pgsql.so), то не должен был бы работать вариант_1, наверное ? а он точно отрабатывает через pgbouncer, т.к. когда последнему делал stop, то и он переставал работать не пойму куда копать ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 22:13 |
|
php, подключение к базе через pgbouncer и сокет
|
|||
---|---|---|---|
#18+
Alex_Wong, ну я не крутой спец по постгри. Меня смутили два параметра различного применения в одном месте. Первый вариант работает на TCP-сокете, там не права, там ограничения по доступу на файрволл возлагаются, если так рассматривать. А вот на UNIX-сокете права следует проверить, это верно. Однако, сообщение об ошибкеавтор Код: php 1. 2.
как бы намекает, что в /tmp сокета нет. Тут права как-то... ну, если только у пользователя, от имени которого запущен php, право чтения списка файлов в /tmp отсутствует. Или php работает в каком-то chroot окружении и не видит системную /tmp, хотя, это больше на фантастику похоже. Может, действительно, сокет где-то в другом месте открыт? Что-нить вроде /var/run/pgsql Alex_Wong из консоли по сокету работает ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 22:39 |
|
php, подключение к базе через pgbouncer и сокет
|
|||
---|---|---|---|
#18+
vkle, - авторкак бы намекает, что в /tmp сокета нет Вы правы, сам в первую очередь это проверил: файл сокета такой есть и pid_файл. Они формируются каждый раз при старте pgbouncer в /tmp, т.к. этот путь указан в pgbouncer.ini Пробовал менять путь ... такая-же ошибка, но уже по новому пути. Такой вопрос мне задавали: sql.ru/forum/1325561/pgbouncer-nastroyka] ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 09:48 |
|
|
start [/forum/topic.php?fid=23&fpage=9&tid=1459671]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 122ms |
0 / 0 |