Помогите с настройкой удаленного доступа к БД

Изображение punchik

Здраствуйте!

Ситуация: Есть ноут (win7) и комп (winXP). На ноуте стоит сервер БД Postgresql-9.0.
Подключаюсь к серверу с ноута (192.168.2.1) - соединяет, с компа (192.168.2.2) - не соединяет. Машины друг друга пингуют.

Попытки решения:Как уже пытался решить проблему?
1. Редактирование postgresql.conf

...
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
 
# - Connection Settings -
 
listen_addresses = '*'		# what IP address(es) to listen on;
					# comma-separated list of addresses;
					# defaults to 'localhost', '*' = all
					# (change requires restart)
port = 5432				# (change requires restart)
max_connections = 100			# (change requires restart)

2. Редактирование
...
# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
 
# IPv4 local connections:
host    ALL             ALL             127.0.0.1/32            md5
host	ALL				ALL				192.168.2.0/24			md5
# IPv6 local connections:
host    ALL             ALL             <img class="ccfilter smileys" src="https://pgdocs.ru/sites/all/modules/ccfilter/smileys/aj.gif" alt="::" title="::" />1/128                 md5

3. Проверка брандмауэров: отключены и на ноуте, и на компе.
4. Помимо стандартного сервера создал сервер БД с левым Name и Host=192.168.2.1

Вопрос: В чем еще может заключаться мой трабл?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Что означает "не соединяет"?

Что означает "не соединяет"? Каков текст ошибки?

Не найдены динамические библиотеки

Изображение punchik

Оу, спасибо Вам за толчок в правильном направлении! Додумался всё таки, как выкоренить текст ошибки. Просто структура в коде была try-except. Она выводила не стандартную ошибку, а которую я описал. Убрал эту структуру, теперь при попытке подключиться с компа выводится ошибка None of the dynamic libraries can be found or is not loadable: C:\Program Files\PostgreSQL\9.0\bin\libpq.dll ! Use TZConnection.LibraryLocation if the location is invalid. Стало ясно, что весь фейл связан с динамическими библиотеками PostgreSQL. Только теперь возник новый вопрос: "Что за бред? Моя программа что, ищет из-под клиентской машины динамические библиотеки на локальном хосте, а не на сервере? Это косяк компонента, который я использую для соединения с БД?" А использую я ZConnection (из библиотеки Zeoslib) и там в свойстве LibraryLocation указал именно адрес C:\Program Files\PostgreSQL\9.0\bin\libpq.dll.

Юзал в своё время Zeos на

Юзал в своё время Zeos на Дельфах, правда очень давно это было. С libpq.dll была какая-то тонкость, точно не помню. Во-первых, надо убедиться, что баблиотека установлена соответственно архитектуре, т.е. если у вас x64, то и либа должна быть x64. Далее попробуйте последовательно положить libpq.dll в windows\system32 в windows и в рабочий каталог .exe программы, которую вы запускаете. Вроде, насколько я помню, именно в этом было дело, хотя не гарантирую.

Format '% ' invalid or incompatible with argument.

Изображение punchik

Спасибо за ответ. Скорее всего Вы имеете в виду то, что библиотека должна находится в этих каталогах на ноуте (на сервере БД), а не на клиентском хосте? В таком случае: Взял я файл C:\Program Files\PostgreSQL\9.0\bin\libpq.dll и скопировал его сначала в C:\Windows\System32. В свойстве TZConnection.LibraryLocation выставил путь C:\Windows\System32\libpq.dll. После компиляции, запуска программы при подключении к БД получаю следующую ошибку.
Не удаляя библиотеку с C:\Windows\System32, тоже самое выполнил по отношению к C:\Windows, поменял путь в свойстве - и опять тот же результат. С рабочим каталогом проекта - те же грабли.
В общем, подключение в программе работает только если в LibraryLocation указать путь к libpq.dll, который лежит в C:\Program Files\PostgreSQL\9.0\bin. Это странно. А когда удаленно подключаешься к серверу, то возникает старая ошибка с текстом None of the dynamic libraries can be found or is not loadable: C:\Program Files\PostgreSQL\9.0\bin\libpq.dll ! Use TZConnection.LibraryLocation if the location is invalid. Неужели единственным решением является установка libpq.dll в C:\Program Files\PostgreSQL\9.0\bin на всех клиентах?

Нет, библиотека должна быть

Нет, библиотека должна быть именно на клиенте, ведь соединение с БД вы устанавливаете с клиента.

Насчёт того куда правильно устанавливать .dll для работы с Zeos я вам не подскажу. Во-первых, Zeos - это сторонняя библиотека, которая не относится к PostgreSQL. Во-вторых, её работа на совести её авторов. Попробуйте списаться с авторами и задать им этот вопрос. Помнится мне автор отвечал даже в аську, хотя лет 10 назад это было, возможно теперь они птыцы гордые :)

Удалось установить удаленное подключение

Изображение punchik

Спасибо за ответ. Ого! Очень весомое первое предложение вашего ответа. Кардинально изменило мое представление.
Выяснил, все dll-ки нужно устанавливать либо в windows/system32, либо в папку, записанную в системную переменную PATH, либо в папку с проектом (записал в порядке уменьшения приоритета).
Общение с авторами ZEOS-библиотеки оставлял на потом, когда в этом вопросе наступит вообще худой конец. К счастью, до такого не дошел :)

http://www.sql.ru/forum/70484

Изображение Игорь

Удалось установить удаленное подключение

Изображение punchik

Спасибо за ответ. Уже посещал тему по этой ссылке. Но это немного не мой случай. Тогда решил, а почему бы не установить компоненты ZEOS'а заново - вместо 7.1.3-stable (которая, походу, действительно существует с косяком) поставить более раннюю и, наверняка, более стабильную 6.6.4-stable. Эврика! Компонент начал ругаться на уже известные ошибки, как на том форуме по ссылке. После подробного рассмотрения темы, последовательной установки библиотек выяснил, каких библиотек не хватало. Хотя ругалось на отсутствие libpq.dll и libpq81.dll, но на самом деле требовались libeay32.dll и ssleay32.dll. Весь минимальный список динамических библиотек, при котором удалось установить удаленное соединение с базой:

comerr32.dll
k5sprt32.dll
krb5_32.dll
libeay32.dll
libiconv-2.dll
libintl-2.dll
libintl-8.dll
libpq.dll
libpq81.dll
ssleay32.dll

Всем спасибо за помощь! Думаю, тему можно закрывать.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023