Russian Qt Forum

Qt => Базы данных => Тема начата: iamunix от Июль 16, 2009, 17:31



Название: Удаленный доступ к PostgreSQL [РЕШЕНО]
Отправлено: 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?


Название: Re: Удаленный доступ к PostgreSQL
Отправлено: BaltikS от Июль 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 тоже советую заглянуть ;)


Название: Re: Удаленный доступ к PostgreSQL
Отправлено: Admin от Июль 16, 2009, 17:46
Все сетевые соединения проверяются telnet

типа

telnet 192.168.20.34 5385,

5385  - порт который слушает Postgres ( я его не помню).


Название: Re: Удаленный доступ к PostgreSQL
Отправлено: iamunix от Июль 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.

Еще раз всем огромное спасибо. После изменений обязательно отпишусь и сообщу о результатах =)


Название: Re: Удаленный доступ к PostgreSQL
Отправлено: iamunix от Июль 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 ? =)


Название: Re: Удаленный доступ к PostgreSQL [РЕШЕНО]
Отправлено: lit-uriy от Июль 17, 2009, 02:49
Кстати, стало как-то очень любопытно, что значит это "магическое" /32 ? =)
тут смотри (http://ru.wikipedia.org/wiki/IP-адрес#.D0.91.D0.B5.D1.81.D0.BA.D0.BB.D0.B0.D1.81.D1.81.D0.BE.D0.B2.D0.B0.D1.8F_.D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.B0.D1.86.D0.B8.D1.8F)