Подключить клиентов к переносному серверу PostgreSQL

Прежде всего: мой единственный опыт работы с SQL связан с SQLite, который является бессерверным движком. Я новичок во всей этой истории клиент/сервер.

Подводя итог моей цели: мне нужно читать/записывать из/в базу данных PosgreSQL с разных компьютеров. Эти компьютеры (все с установленной Windows 7 или 10) находятся в одной сети, но я не могу установить на них какое-либо программное обеспечение.

Моя идея заключалась в том, чтобы загрузить портативный сервер PostgreSQL и сохранить его в общем сетевом каталоге (например, Y:\PortableProject), чтобы все компьютеры имели доступ к исполняемым файлам и к папке Data, содержащей базы данных. Предположим, что сетевой IP-адрес 192.170.1.200 (из команды ipconfig), вот шаги, которые я пытался сделать до сих пор:

  1. Чтобы разрешить IP 192.170.1.200 быть хостом, откройте файл pg_hba.conf и добавьте следующую строку в EOF

    host    all             all             192.170.1.200/32                 trust
    
  2. Чтобы разрешить доступ к серверу всем компьютерам, откройте postgresql.conf и обновите listen_addresses до *.

    listen_addresses = '*'
    
  3. Откройте командную строку на одном компьютере (например, на компьютере A) и запустите сервер из командной строки с помощью следующей команды:

    "Y:\PortableProject\PostgreSQLPortable\App\PgSQL\bin\pg_ctl.exe" start -D "Y:\PortableProject\PostgreSQLPortable\Data\data"
    
  4. Продолжайте писать и читать на всех компьютерах. Например, на компьютере B откройте его команду приглашения и прочитайте всю информацию о таблице tabtest из базы данных dbtest (предположим, что они существуют) с помощью команды:

    "Y:\PortableProject\PostgreSQLPortable\App\PgSQL\bin\psql.exe" -h 192.170.1.200 -p 5432 -U postgres -d dbtest -c "SELECT * FROM tabtest"
    
  5. Закройте соединение на компьютере A:

    "Y:\PortableProject\PostgreSQLPortable\App\PgSQL\bin\pg_ctl.exe" stop -D "Y:\PortableProject\PostgreSQLPortable\Data\data"
    

Проблема возникает на шаге 4. Даже если я запускаю ее с компьютера А, я получаю следующую ошибку

psql: could not connect to server: Connection refused (0x0000274D/10061)
        Is the server running on host "192.170.1.200" and accepting
        TCP/IP connections on port 5432?

Я делаю это совершенно неправильно? Возможно ли вообще достичь моей цели?


person Gabriel Mota    schedule 16.09.2016    source источник
comment
Не знаю, почему вы используете переносной postgre вместо обычного. Ваша проблема заключается в том, что вы читаете базу данных с другого компьютера, а обычная делает это очень хорошо, и вам не нужно устанавливать sw на этот компьютер. Portable предназначен для тех случаев, когда вам нужно взять свою базу данных за пределы офиса.   -  person Juan Carlos Oropeza    schedule 16.09.2016
comment
Извините, но я действительно не знаю, как поступить, следуя вашему предложению. Как я могу читать из базы данных postgre без установки и без переносного postgres? Мне тоже нужно вставлять и обновлять со всех компов в сети.   -  person Gabriel Mota    schedule 17.09.2016
comment
Может я не понимаю вашей проблемы. Но если вы не хотите ничего устанавливать, разработайте веб-приложение.   -  person Juan Carlos Oropeza    schedule 17.09.2016


Ответы (1)


Сервер работает на хосте «192.170.1.200» и принимает соединения TCP/IP через порт 5432?

Это означает, что сервер работает в 192.170.1.200, теперь вы выполняете с серверного компьютера или с другого компьютера?

pg_hba.conf должен указать, каким другим адресам/пользователям разрешен доступ к этому серверу.

Так что, если у вас есть доступ с того же компьютера, который вы используете

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

Для внешнего адреса вы используете что-то вроде

host    all             all             192.170.1.1/24          trust

Это позволит получить доступ к ПК со следующим диапазоном IP-адресов. Калькулятор IP

HostMin:   192.170.1.1   
HostMax:   192.170.1.254 
person Juan Carlos Oropeza    schedule 16.09.2016