Postgresql как подключиться к базе данных с другой машины

от admin

Postgresql как подключиться к базе данных с другой машины

dblink_connect — открывает постоянное подключение к удалённой базе данных

Синтаксис

Описание

Функция dblink_connect() устанавливает подключение к удалённой базе данных PostgreSQL . Целевой сервер и база данных указываются в стандартной строке подключения libpq . Если требуется, этому подключению можно назначить имя. В один момент времени могут быть открытыми несколько именованных подключений, но только одно подключение без имени. Подключение будет сохраняться, пока не будет закрыто или до завершения сеанса базы данных.

В строке подключения также может задаваться имя существующего стороннего сервера. Для определения стороннего сервера рекомендуется использовать обёртку сторонних данных dblink_fdw . См. пример ниже, а также CREATE SERVER и CREATE USER MAPPING .

Аргументы

Имя, назначаемое этому подключению; если опускается, открывается безымянное подключение, заменяющее ранее существующее безымянное подключение. connstr

Строка подключения в стиле libpq , например hostaddr=127.0.0.1 port=5432 dbname=mydb user=postgres password=mypasswd options=-csearch_path= . За подробностями обратитесь к Подразделу 34.1.1. В ней также может задаваться имя стороннего сервера.

Возвращаемое значение

Возвращает состояние (это всегда строка OK , так как в случае любой ошибки функция прерывается, выдавая исключение).

Замечания

Если к базе данных, которая не приведена в соответствие шаблону безопасного использования схем, имеют доступ недоверенные пользователи, начинайте сеанс с удаления доступных им для записи схем из пути поиска ( search_path ). Например, для этого можно добавить options=-csearch_path= в connstr . Это касается не только dblink , но и любых других интерфейсов для выполнения произвольных SQL-команд.

Создавать подключения, не требующие аутентификации по паролю, с помощью dblink_connect разрешено только суперпользователям. Если эта возможность нужна обычным пользователям, следует воспользоваться функцией dblink_connect_u .

Использовать в именах подключений знаки «равно» не рекомендуется, так как при этом возможна путаница со строками подключений в других функциях dblink .

Как настроить удалённый доступ к PostgreSQL с удалённых серверов

Есть два метода настройки удалённого доступ к PostgreSQL с внешних серверов: 1) открыть доступ к вашему PostgreSQL вообще со всех серверов в интернете и 2) Вручную настроить те сервера с которых можно будет подключится к вашей базе.

Первый метод хорош только в случае тестового или учебного проекта, так как небольшой баг в коде может раскрыть данные доступа к вашей базе и скомпрометировать всё её содержимое. Если вы думаете, что ваш проект слишком маленький и вас это не касается, то вы ошибаетесь. Недавно я запустил совершенно чистый сервер с новым ip и оставил открытый доступ к базе, уже через час какой-то бот стёр всю БД и предлагал выкуп, за возвтар данных.

Настройка доступа избранным ip

Для того, что бы настроить доступ к PostgreSQL с разрешённых вами серверов нужно для начала открыть доступ к PostgreSQL серверу с внешних серверов. Открываем файл /etc/postgresql/14/main/postgresql.conf Обратите внимание, что у вас может отличатся путь к файлу, например с выходом версии 15 PostgreSQL

В разделе Connection Settings нужно раскомментировать строку listen_addresses и привести её к виду:

Далее в этой же директории открываем файл pg_hba.conf и в самом низу добавляем ip адреса тех серверов которым вы хотите дать доступ к вашему PostgreSQL.

Пример строки для каждого сервера:

В примере я открыл удалённый доступ для сервера 80.121.11.21 и 120.121.11.11

В моей конфигурации открыт доступ для всех пользователей, во всем базам данных: host all all для большей безопасности вы можете ограничить этот набор. Например открыть доступ только пользователю remote: host all remote ко всем базам, или ограничить до одного пользователя и одной базе: host orders remote Как видно из примера, только пользователь remote сможет подключится с удачного сервера и получить доступ, только к базе данных orders

Не забывайте перезагружать PostgreSQL после каждого изменения конфиг файлов

Доступ со всех ip

Если предостережение выше на вас не подействовало, вы в праве на свой страх и риск открыть доступ к вашей базе со всех серверов в интернете.

How to Allow Remote Access to PostgreSQL database

I have PostgreSQL 9.2 Installed in Windows 7 and I have windows XP installed in Virtual Machine, how do I connect these two databases and allow remote access to add/edit the database from both Systems ?

Читать:
Почему не работает приложение the weather channel

8 Answers 8

In order to remotely access a PostgreSQL database, you must set the two main PostgreSQL configuration files:

Here is a brief description about how you can set them (note that the following description is purely indicative: To configure a machine safely, you must be familiar with all the parameters and their meanings)

First of all configure PostgreSQL service to listen on port 5432 on all network interfaces in Windows 7 machine:
open the file postgresql.conf (usually located in C:\Program Files\PostgreSQL\9.2\data) and sets the parameter

Check the network address of WindowsXP virtual machine, and sets parameters in pg_hba.conf file (located in the same directory of postgresql.conf) so that postgresql can accept connections from virtual machine hosts.
For example, if the machine with Windows XP have 192.168.56.2 IP address, add in the pg_hba.conf file:

this way, PostgreSQL will accept connections from all hosts on the network 192.168.1.XXX.

Restart the PostgreSQL service in Windows 7 (Services-> PosgreSQL 9.2: right click and restart sevice). Install pgAdmin on windows XP machine and try to connect to PostgreSQL.

Как настроить удаленное подключение к БД PostgreSQL из Windows

Настройка удаленного подключения к БД PostgreSQL 13 на сервере Ubuntu 18 LTS из ОС Windows 10 утилиты pgAdmin 4, двумя способами: подключение с помощью SSH туннеля и прямое подключение к серверу PostgreSQL.

�� Я рекомендую использовать подключение через SSH туннель, простое в настройке и безопасное. При использовании SSH туннеля, порт PostgreSQL не открывается для внешних подключений.

pgAdmin — самая популярная и многофункциональная платформа для администрирования и разработки с открытым исходным кодом для PostgreSQL, самой совершенной базы данных с открытым исходным кодом в мире.

Официальный сайт pgAdmin

Узнать расположение файлов конфигурации PostgreSQL: postgresql.conf, pg_hba.conf.

Узнать порт PostgreSQL командой:

Получить конфигурацию PostgreSQL

В примере, файл конфигурации PostgreSQL располагается по пути /etc/postgresql/13/main/postgresql.conf, порт подключения 5432.

Содержание

SSH туннель к PostgreSQL

Подключение к серверу PostgreSQL с использованием SSH туннеля. При выборе такого типа подключения никаких дополнительных настроек на сервере PostgreSQL не требуется.

Настройка pgAdmin на Windows 10:

  1. Запускаем pgAdmin
  2. Создаем новое подключение к серверу: Object -> Create -> Server;
  3. Вкладка General:
    1. Name: название сервера (произвольное);
    1. Host Name: localhost;
    2. Port: 5432;
    3. Maintenance database: mybase;
    4. Username: postgres;
    1. Use SSH tunneling: Yes;
    2. Tunnel host: myserver-IP;
    3. Tunnel port: 58222;
    4. Username: root;
    5. Authentication: Identity file;
    6. Identity file: path_key.

    �� В качестве ключа указываем приватный ключ id_rsa из Настройка SSH сертификатов на сервере. Как изменить порт SSH в Частые вопросы.

    Подключение к базе данных PostgreSQL через SSH туннель

    Прямое подключение к PostgreSQL

    Для настройки прямого подключения к PostgreSQL вносим изменения в файлы конфигурации postgresql.conf и pg_hba.conf

    Настройка PostgreSQL

    postgresql.conf

    Файл postgresql.conf находится в папке установки PostgreSQL.

    Раскомментируем или добавим строку:

    Мы разрешили прослушивание запросов от всех IP-адресов.

    Настройка файла postgresql.conf

    �� Возможные варианты:
    listen_addresses = ‘0.0.0.0’ чтобы слушать все IPv4;
    listen_addresses = ‘::’ чтобы слушать все IPv6;
    listen_addresses = ‘your.host.ip.adress’ определенный адрес или список адресов через запятую.

    pg_hba.conf

    Файл pg_hba.conf находится в папке установки PostgreSQL.

    Открываем на редактирование:

    Добавляем запись в секцию # IPv4 local connections:

    Запись разрешает подключение к БД mybd пользователю postgres с IP адресом 41.223.232.15, используя пароль.

    Настройка pg_hba.conf

    После изменения файлов конфигурации, перезапустите службу PostgreSQL.

    Настройка pgAdmin

    Настройка прямого подключения к базе данных PostgreSQL через интернет или локальную сеть используя pgAdmin.

    1. Запустите pgAdmin
    2. Создаем новое подключение к серверу: Object -> Create -> Server;
    3. Вкладка General:
      1. Name: название сервера (произвольное);
      1. Host Name: RemoteServerIP;
      2. Port: 5432;
      3. Maintenance database: mybase;
      4. Username: postgres.

      Частые вопросы

      ps aux | grep postgres | grep — -D

      grep -H ‘^port’ /etc/postgresql/*/main/postgresql.conf

      Файл /etc/ssh/sshd_config , строка port.

      Как настроить удаленное подключение к БД PostgreSQL из Windows обсуждалось в этой статье. Я надеюсь, что теперь вы сможете настроить pgAdmin для подключения к PostgreSQL (прямое подключение или используя SSH туннель). Однако, если вы столкнетесь с каким-то проблемами при настройке сервера или pgAdmin, не стесняйтесь написать в комментариях. Я постараюсь помочь.

Related Posts