Russian Qt Forum
Ноябрь 24, 2024, 04:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаленный доступ к PostgreSQL [РЕШЕНО]  (Прочитано 10816 раз)
iamunix
Гость
« : Июль 16, 2009, 17:31 »

Добрый день.
Ситуация такова - есть компьютер на котором установлен linux (openSuSE 11.1) и настроен PostgreSQL 8.3.
Пытаюсь соединиться с базой данных следующим образом:
Код
C++ (Qt)
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("10.0.100.100");
    db.setPort(5432);
    db.setDatabaseName("testdb");
    db.setUserName("testuser");
    db.setPassword("password");
    bool ok = db.open();
 
    if( ok ) { QMessageBox::information(this, "", "<font color=green>Alles ok :)</font>"); }
    else { QMessageBox::information(this, "", "<font color=red>Error :'(</font>"); }
 
В результате чего, при запуске приложения с другого компьютера, выскакивает сообщение с текстом "Error Плачущий".

Если запускать приложение на "сервере", замнив строку
Код
C++ (Qt)
db.setHostName("10.0.100.100");
на
Код
C++ (Qt)
db.setHostName("127.0.0.1");
или
Код
C++ (Qt)
db.setHostName("localhost");
то будет отображено сообщение с текстом "Alles ok Улыбающийся".

Разрешал удаленный доступ к базе данных следующим образом:
Код:
В файле $PGSQL_DATA_D/postgresql.conf дописал строку - listen_addresses = '*'

В файле $PGSQL_DATA_D/pg_hba.conf - host    testdb       testuser        10.0.100.101     password

Допускается ли использование ip адресов в setHostName() ?
Или это проблемы с конфигурацией PostgreSQL?
« Последнее редактирование: Июль 17, 2009, 02:24 от iamunix » Записан
BaltikS
Гость
« Ответ #1 : Июль 16, 2009, 17:40 »

Цитировать
Или это проблемы с конфигурацией PostgreSQL?
Именно в нём, Qt здесь абсолютно не при чём.... Можешь ради эксперимента на сервере запустить прогу не с 127.0.0.1, а с 10.0.100.101 и он тоже шлёпнет ошибку....

нужно копать именно в эти два файла, которые ты написал...
Чую в pg_hba надо написать не 10.0.100.101, а 10.0.100.101/32... Всё дело в нём...

Да и текст ошибки в lastError тоже советую заглянуть Подмигивающий
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #2 : Июль 16, 2009, 17:46 »

Все сетевые соединения проверяются telnet

типа

telnet 192.168.20.34 5385,

5385  - порт который слушает Postgres ( я его не помню).
Записан
iamunix
Гость
« Ответ #3 : Июль 16, 2009, 17:55 »

Вот это оперативно отреагировали =) Спасибо огромное =)

Попробую изменить
Цитировать
Чую в pg_hba надо написать не 10.0.100.101, а 10.0.100.101/32...
и заглянуть в lastError(). Позже отпишусь относительно результатов.

Проверял открытость порта используя штатную сетевую утилиту в Mac OS X. Говорит, что на хосте 10.0.100.100 есть открытый порт 5432 - PostgreSQL.

Еще раз всем огромное спасибо. После изменений обязательно отпишусь и сообщу о результатах =)
Записан
iamunix
Гость
« Ответ #4 : Июль 17, 2009, 02:21 »

Итак, было сделано два изменения:
  • 10.0.100.101 был заменен на 10.0.100.101/32
  • password заменен на md5

В результате в файл $PGSQL_DATA_D/pg_hba.conf  была добавлена строка :
Цитировать
all    all    all    10.0.100.101/32    md5

Теперь все "работает" =)) те вижу сообщение "Alles ok Улыбающийся".

Еще раз огромное всем спасибо. =)

Кстати, стало как-то очень любопытно, что значит это "магическое" /32 ? =)
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Июль 17, 2009, 02:49 »

Кстати, стало как-то очень любопытно, что значит это "магическое" /32 ? =)
тут смотри
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.188 секунд. Запросов: 22.