- Установка PostgreSQL
- Содержание
- Скачать PostgreSQL
- Установка PostgreSQL
- Настройка PostgreSQL
- Настройка брандмауэра для PostgreSQL
- Как настроить удаленное подключение к БД PostgreSQL из Windows
- Содержание
- SSH туннель к PostgreSQL
- Прямое подключение к PostgreSQL
- Настройка PostgreSQL
- postgresql.conf
- pg_hba.conf
- Настройка pgAdmin
- Частые вопросы
- Настройка удаленного доступа к БД PostgreSQL
- Настройка брандмауэра Windows
- Не удается подключиться к postgresql через порт 5432
- Шаг 1: Запуск pg_lsclusters покажет все кластеры postgres, работающие на вашем устройстве
- Шаг 2: перезапустите pg_ctlcluster
- Шаг 3: Шаг 2 не удался и выдал ошибку
- Шаг 4: проверьте право собственности на postgres
- Шаг 5: Проверьте, что пользователь postgres принадлежит к группе пользователей ssl-cert
Установка PostgreSQL
Содержание
Скачать PostgreSQL
На официальном сайте по этой ссылке доступен дистрибутив. Скачиваем его.
Установка PostgreSQL
Запускаем установщик от имени администратора (правая кнопка мыши по файлу)
Установщик автоматически установит Microsoft Visual c++
После чего перейдет к самой установке PostgreSQL, все время жмем далее, далее.
Вводим пароль подключения к базе PostgreSQL
Порт подключения оставляем по умолчанию 5432
Отказываемся от установки различных дополнений
Настройка PostgreSQL
Из соображения безопасности по умолчанию в PostgreSQL установлено значение слушать запросы только с localhost. Необходимо разрешить PostgreSQL слушать запросы из сети. Для этого нужно запустить pgadmin III, который установился вместе с PostgreSQL, подключиться к серверу и внести следующие настройки:
Если спросит ввести пароль, который мы установили ранее (helloasterisk)
Далее открыть файл pg_hba.conf
Файл может располагаться в следующей директории C:\Program Files\PostgreSQL\9.4\data (все зависит от OC)
Необходимо 2 раза щелкнуть левой кнопкой мыши по пустой строке
И установить параметры, как на картинке
Включен + Тип host База данных all Пользователь all IP Адрес 0.0.0.0/0 Метод md5
После чего нажать сохранить
После чего необходимо перезапустить службу PostgreSQL Запустить оснастку службы можно выполнив команду Win+R mmc services.msc
Настройка брандмауэра для PostgreSQL
Разрешаем входящие соединения на порт 5432 по протоколу TCP.
Заходим в панель управления Windows, открываем Брандмауэр
Жмем Дополнительные параметры
Во вкладке Правила для входящих подключений жмем Создать правило
Как настроить удаленное подключение к БД 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 располагается по пути /etc/postgresql/13/main/postgresql.conf, порт подключения 5432.
Содержание
SSH туннель к PostgreSQL
Подключение к серверу PostgreSQL с использованием SSH туннеля. При выборе такого типа подключения никаких дополнительных настроек на сервере PostgreSQL не требуется.
Настройка pgAdmin на Windows 10:
- Запускаем pgAdmin
- Создаем новое подключение к серверу: Object -> Create -> Server;
- Вкладка General:
- Name: название сервера (произвольное);
- Вкладка Connection:
- Host Name: localhost;
- Port: 5432;
- Maintenance database: mybase;
- Username: postgres;
- Вкладка SSH Tunnel:
- Use SSH tunneling: Yes;
- Tunnel host: myserver-IP;
- Tunnel port: 58222;
- Username: root;
- Authentication: Identity file;
- Identity file: path_key.
💡 В качестве ключа указываем приватный ключ id_rsa из Настройка SSH сертификатов на сервере. Как изменить порт SSH в Частые вопросы.
Настройки pgAdmin для подключения через SSH туннель
Прямое подключение к PostgreSQL
Для настройки прямого подключения к PostgreSQL вносим изменения в файлы конфигурации postgresql.conf и pg_hba.conf
Настройка PostgreSQL
postgresql.conf
Файл postgresql.conf находится в папке установки PostgreSQL.
Раскомментируем или добавим строку:
Мы разрешили прослушивание запросов от всех IP-адресов.
💡 Возможные варианты:
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, используя пароль.
После изменения файлов конфигурации, перезапустите службу PostgreSQL.
Настройка pgAdmin
Настройка прямого подключения к базе данных PostgreSQL через интернет или локальную сеть используя pgAdmin.
- Запустите pgAdmin
- Создаем новое подключение к серверу: Object -> Create -> Server;
- Вкладка General:
- Name: название сервера (произвольное);
- Вкладка Connection:
- Host Name: RemoteServerIP;
- Port: 5432;
- Maintenance database: mybase;
- 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, не стесняйтесь написать в комментариях. Я постараюсь помочь.
Настройка удаленного доступа к БД PostgreSQL
-
- Создать пользователя базы данных, который будет использоваться для удалённой работы с базой данных
- Настроить права пользователя по умолчанию(права для работы с объектами базы данных, которые будут созданы в будущем)
- Настроить права пользователя на таблицы и другие объекты базы данных (права для работы с объектами базы данных, которые были созданы до создания пользователя)
- Открыть папку с установленной БД PostgreSQL
По умолчанию база данных устанавливается:
- x86: C:\Program Files (x86)\PostgreSQL\11\data
- x64: C:\Program Files\PostgreSQL\11\data
- В текстовом редакторе открыть файл pg_hba.conf
- И под строкой:
host all all 127.0.0.1/32 md5
добавить строку по аналогии с примером
host ama ama_user all md5
Небольшая расшифровка этой строки:
— host — используется подключение по TCP/IP
— ama– Удалённый пользователь сможет подключаться к базе данных «ama», название базы можно заменить на своё, например «mydb». Помимо этого можно написать слово all, тогда для пользователя будет открыт доступ ко всем базам данных сервера
— ama_user– пользователь с псевдонимом «ama-user» сможет подключаться к базе данных «ama», если указать слово all, то база данных будет доступна любому пользователю
— all— Используется в качестве адреса удалённого рабочего места, в данном случае доступ открывается для любой удалённой машины, для пользователя с псевдонимом указанном в предыдущем столбце. Если требуется указать конкретный адрес, то его можно написать вот в такой форме: 192.168.0.2/32, а для нескольких пользователей придётся указывать несколько строк подключения, указывать каждого в новой строке, пример будет приведён ниже
—md5 – пароль пользователя хешируется алгоритмом MD5, если соответствует, то можно зайти
Пример предоставления доступа нескольким рабочим местам через пользователя «ama-user» к базе данных «ama»:
host ama ama-user 192.168.0.2/32 md5
host ama ama-user 192.168.0.3/32 md5
host ama ama-user 192.168.0.4/32 md5
Для более подробной информации по настройке конфига pg_hba.conf, пройдите по ссылке.
- Сохранить изменения в файле;
- Открыть порт в настройках брандмауэра Windows
- Открыть папку с установленной БД PostgreSQL
По умолчанию база данных устанавливается:
- x86: C:\Program Files (x86)\PostgreSQL\11\data
- x64: C:\Program Files\PostgreSQL\11\data
- В текстовом редакторе открыть файлpostgresql.conf
- Найти строку listen_addresses и убедиться, что она имеет такой вид:
listen_addresses = ‘*’ # what IP address(es) to listen on;
- Открыть Панель управления -> Администрирование -> Службы
- Выбрать в списке службpostgresql и перезапустить ёё
Настройка брандмауэра Windows
Данный пункт необходим, если с СУБД PostgreSQL работает несколько пользователей одновременно. Так же, следует уточнить, что в этом пункте рассматривается базовый сценарий по открытию порта для подключения и может не подойти Вам по параметрами безопасности.
1. Открыть Панель управления -> Брандмауэр защитника Windows ;
2. Выбрать пункт Дополнительные параметры ;
3. Выбрать пункт Правила для входящих подключений -> Создать правило. . На форме мастер создания правила выбрать Для порта и нажать Далее
4. Выбрать пункт Протокол TCP и пункт Определенныйе локальные порты . На стадии установки СУБД PostgreSQL было предложено указать порт для доступа к БД PostgreSQL. Номер порта необходимо ввести в поле Определенные локальные порты: (по умолчанию, при установке указывается порт 5432 ) и затем нажать Далее
5. Выбрать пункт Разрешить подключение и затем нажать Далее
6. Выбрать все пункты и нажать Далее
7. Задать имя правила, например ama-pg и нажать Готово
8. Настройка порта завершена
После выполнения всех пунктов данной инструкции, к БД Postgres можно подключаться с удаленного компьютера
Не удается подключиться к postgresql через порт 5432
Я установил стек Bitnami Django, который включал PostgreSQL 8.4.
При запуске psql -U postgres я получаю следующую ошибку:
PG определенно работает, и pg_hba.conf файл выглядит так:
«Доказательство», что pg работает:
Эта проблема возникает из-за установки postgres пакета без номера версии. Хотя postgres будет установлен и будет правильной версии, скрипт для настройки кластера не будет работать правильно; это проблема упаковки.
Если вам удобно, postgres есть скрипт, который вы можете запустить, чтобы создать этот кластер и postgres запустить его. Тем не менее, есть более простой способ.
Сначала удалите старую установку postgres. В настоящее время проблема заключается в 9.1, поэтому я буду считать, что это то, что вы установили
Теперь просто переустановите
Запишите название пакета с номером версии. НТН.
Сообщение об ошибке относится к сокету Unix-домена, поэтому вам нужно настроить netstat вызов, чтобы не исключать их. Так что попробуйте без опции -t :
Я предполагаю, что сервер на самом деле слушает сокет, /tmp/.s.PGSQL.5432 а не тот /var/run/postgresql/.s.PGSQL.5432 , к которому ваш клиент пытается подключиться. Это типичная проблема при использовании скомпилированных вручную или сторонних пакетов PostgreSQL в Debian или Ubuntu, потому что исходным по умолчанию для каталога сокетов Unix-домена является, /tmp но пакет Debian меняет его на /var/run/postgresql .
Возможные обходные пути:
- Используйте клиентов, предоставленных вашим сторонним пакетом (звонок /opt/djangostack-1.3-0/postgresql/bin/psql ). Возможно, удалите все пакеты, поставляемые с Ubuntu (это может быть сложно из-за других обратных зависимостей).
- Исправьте каталог сокетов стороннего пакета, чтобы он был совместим с Debian / Ubuntu.
- -H localhost Вместо этого используйте для подключения через TCP / IP.
- Используйте -h /tmp или эквивалентную PGHOST настройку, чтобы указать на правильный каталог.
- Не используйте сторонние пакеты.
Это работает для меня:
Включить или добавить:
Перезапустите ядро базы данных:
Также вы можете проверить файл pg_hba.conf
И добавьте адрес своей сети или хоста:
Вы можете использовать, psql -U postgres -h localhost чтобы заставить соединение происходить по TCP вместо доменных сокетов UNIX; ваш netstat вывод показывает, что сервер PostgreSQL прослушивает порт 5432 локального хоста.
Вы можете узнать, какой локальный сокет UNIX используется сервером PostgrSQL, используя другой вызов netstat :
В любом случае, интерфейсы, на которых слушает сервер PostgreSQL, настроены в postgresql.conf .
Просто создайте мягкую ссылку, подобную этой:
Я заставляю это работать этим:
Выберите предпочитаемые локали и запустите
(9.5 — это моя версия postgresql)
и тогда это работает!
Мне пришлось скомпилировать PostgreSQL 8.1 на Debian Squeeze, потому что я использую Project Open, который основан на OpenACS и не будет работать на более поздних версиях PostgreSQL.
Конфигурация компиляции по умолчанию помещает unix_socket в систему /tmp , но проект Open, который основывается на PostgreSQL, не будет работать , так как это выглядит для unix_socket на /var/run/postgresql .
Есть настройка, postgresql.conf чтобы установить местоположение сокета. Моя проблема заключалась в том, что либо я мог установить /tmp и psql работать, но не открыть проект, либо я мог установить его /var/run/postgresql и psql не работать, но открытие проекта сделало.
Одно из решений этой проблемы состоит в том, чтобы установить сокет для /var/run/postgresql и затем запустить psql , основываясь на предложении Питера, как:
Это выполняется локально с использованием локальных разрешений. Единственным недостатком является то, что он больше печатает, чем просто «psql».
Другое предложение, которое сделал кто-то, состояло в том, чтобы создать символическую связь между этими двумя местоположениями. Это также сработало, но ссылка исчезла после перезагрузки. Возможно, проще использовать аргумент -h, однако я создал символическую ссылку из скрипта PostgreSQL /etc/init.d . Я разместил символическую команду создания ссылки в разделе «Пуск». Конечно, когда я запускаю команду остановки и запуска или перезапуска, она будет пытаться воссоздать существующую символическую ссылку, но, кроме предупреждающего сообщения, в этом нет никакого вреда.
В моем случае вместо:
и явно установить unix_socket /var/run/postgresql/.s.PGSQL.5432 в postgresql.conf .
Решение:
и это. ( 9.3 — это моя текущая версия PostgreSQL. Напишите свою версию!)
Если ваша служба Postgres запущена и работает без каких-либо ошибок или при запуске службы Postgres нет ошибок, но вы все еще получаете указанную ошибку, выполните следующие действия.
Шаг 1: Запуск pg_lsclusters покажет все кластеры postgres, работающие на вашем устройстве
Скорее всего, статус будет ниже в вашем случае и сервис Postgres
Шаг 2: перезапустите pg_ctlcluster
Шаг 3: Шаг 2 не удался и выдал ошибку
Если этот процесс не будет успешным, он выдаст ошибку. Вы можете увидеть журнал ошибок на /var/log/postgresql/postgresql-9.6-main.log
Моя ошибка была:
Шаг 4: проверьте право собственности на postgres
Убедитесь, что postgres это владелец /var/lib/postgresql/version_no/main
Если нет, запустите
Шаг 5: Проверьте, что пользователь postgres принадлежит к группе пользователей ssl-cert
Оказалось, что я ошибочно удалил пользователя Postgres из ssl-cert группы. Запустите приведенный ниже код, чтобы исправить проблему группы пользователей и исправить разрешения
В моем случае это было вызвано опечаткой, которую я сделал при редактировании /etc/postgresql/9.5/main/pg_hba.conf
Но MD5 должен был быть в нижнем регистре md5 :
Я обнаружил, что удаление Postgres звучит неубедительно. Это помогает решить мою проблему:
Запустите сервер postgres:
Убедитесь, что сервер запускается при загрузке:
Подробную информацию можно найти на сайте DigitalOcean здесь.
Я не смог решить эту проблему с моим сервером postgres-9.5. После 3 дней нулевого прогресса, пробуя каждую перестановку исправлений на этом и других сайтах, я решил переустановить сервер и потерять 5 дней работы. Но я повторил проблему на новом экземпляре. Это может дать некоторое представление о том, как это исправить, прежде чем использовать катастрофический подход, который я сделал.
Во-первых, отключите все параметры ведения журнала в postgresql.conf. Это раздел:
Закомментируйте все в этом разделе. Затем перезапустите сервис.
При перезапуске используйте /etc/init.d/postgresql start или restart я нашел полезным находиться в режиме суперпользователя при перезапуске. У меня было открыто окно x только для этой операции. Вы можете установить этот режим суперпользователя с помощью sudo -i .
Убедитесь, что к серверу можно подключиться с помощью этой простой команды: psql -l -U postgres
Если это не помогает, то подумайте:
Я менял владельца многих папок, пытаясь найти решение. Я знал, что я, вероятно, буду пытаться вернуть владельцам этих папок еще chmod два дня. Если вы уже перепутали владельцев этих папок и не хотите полностью очищать свой сервер, начните отслеживать настройки всех затронутых папок, чтобы вернуть их в исходное состояние. Возможно, вы захотите попробовать выполнить параллельную установку в другой системе и систематически проверять владение и настройки всех папок. Утомительно, но вы можете получить доступ к своим данным.