Изменить порт postgresql linux

Обновлено: 03.07.2024

Эта статья описывает как настроить PostgreSQL и интегрировать ее с PHP и Apache. Она также описывает, как сделать PostgreSQL доступным из клиента удалённого доступа. Считаем, что PHP и Apache уже установлены. Если вам нужна помощь настройки любой из этих программ, смотрите LAMP и следуйте всем разделам, кроме связанного с MySQL.

Contents

Установка PostgreSQL

  • Устанавливаем postgresql
  • Инициализируем кластер с нужной локалью (она должна быть доступна в системе). Обратите внимание, что в данном примере используем ru_RU.UTF-8
  • Если получили ошибку "Невозможно создать директорию, недостаточно прав", то изменяем владельца PGROOT директории и пробуем еще раз
  • Запускаем сервер PostgreSQL
  • Проверяем запустилось ли:
  • Дополнительно его можно добавить в автозагрузку

Создание Вашей первой базы данных

  • Становимся пользователем postgres (пользователь postgres не имеет пароля по умолчанию, поэтому таким вот образом)
  • Добавляем нового пользователя базы данных

-D Пользователь не может создавать базы данных
-R Пользователь не может создавать аккаунты
-S Пользователь не является суперпользователем
-P Запрашивать пароль при создании

С другой стороны, вы можете использовать команду createuser без параметров. Вывод в терминале выглядит так:

  • Если имя созданного пользователя совпадает с именем пользователя ($USER), вы получите доступ к базе данных оболочки PostgreSQL без указания имени пользователя (что весьма удобно).
  • Создаём новую базу данных. Создавать можно только от пользователя (например, postgres, за которого мы зашли), имеющего разрешение на чтение и запись (read/write). Если кодировку не указать, то она будет той, что вы указали в разделе «Установка PostgreSQL».
  • Вот и всё! Ваша база данных создана. Теперь можете уже под любым пользователем управлять БД:
  • Если имя базы данных И имя пользователя БД совпадают с текущим именем пользователя ($USER), то можно просто:

Знакомство с PostgreSQL

Доступ к оболочке базы данных

  • Становимся postgres пользователем, чтобы иметь возможность задать ваши права (как у основного пользователя)
  • Запускаем основную оболочку базы данных, в которой мы сможем создавать, удалять базы данных/таблицы, задавать права и запускать команды SQL.
  • Список всех возможных команд (например, CREATE TABLE ) для запросов
  • Подробное описание команды
  • Подключаем определённую базу данных
  • Список всех пользователей и их уровни доступа
  • Краткая информация о всех таблицах в текущей базе данных
  • Меняем пароль
  • Показать все используемые настройки
  • Выйти из psql

Есть, конечно, много других мета-команд, но именно эти должны помочь вам начать работу.

Настройка удалённого доступа к PostgreSQL

Файл настроек сервера баз данных PostgreSQL postgresql.conf . Этот файл находится в папке данных сервера, обычно /var/lib/postgres/data . В этой же папке находятся основные файлы настроек включая и pg_hba.conf .

Примечание: По умолчанию эта папка не доступна даже для просмотра (или поиска) от лица обычного пользователя.

Из-под пользователя root редактируем файл

В разделе connections and authentications раскомментируйте или исправьте строку listen_addresses по вашему желанию на

и внимательно просмотрите другие строки.
Далее добавляем следующую строку в основной файл настройки проверки подлинности /var/lib/postgres/data/pg_hba.conf . (если вы планируете подключатся только со своего компьютера, то пропустите данный шаг) Этот файл определяет, каким хостам разрешено подключаться, так что будьте осторожны.

где your_desired_ip_address — IP-адрес клиента.

После этого необходимо перезапустить демон, чтобы изменения вступили в силу

Примечание: PostgreSQL по умолчанию использует порт 5432 для удалённого доступа. Поэтому убедитесь, что этот порт открыт и может принимать входящие соединения.

Если возникли проблемы взгляните на лог-файл сервера

Не менее важные ошибки можно увидеть командой:

Настройка PostgreSQL для работы с PHP

  1. Установите модуль PHP-PostgreSQL
  2. Откройте файл /etc/php/php.ini в удобном для вас текстовом редакторе, например,
  3. Найдите строку, начинающуюся с ;extension=pgsql.so , и из неё уберите ; ( ; значит, что строка закомментирована). Если вы используете PDO, сделайте то же самое с ;extension=pdo.so и ;extension=pdo_pgsql.so . Если этих строк нет, добавьте их (без ; ). Эти строки надо искать в разделе файла «Dynamic Extensions» (по умолчанию) или в самом конце файла.
  4. Перезапустите веб-сервер Apache
  5. Либо, если у вас nginx + php-fpm, то

Настройка PostgreSQL для работы с HHVM

Если вы используете не ночную версию, то выполните это команду (проверено на HHVM 3.6.1), чтобы избежать ошибок компиляции:

Затем надо собрать (если улучшенная поддержка языка Hack не нужна, то уберите -DHACK_FRIENDLY=ON):

Скопируем скомпилированное расширение:

Затем в /etc/hhvm/server.ini добавляем:

Изменение кодировки новой базы данных на UTF-8 (по вашему усмотрению)

Когда создаётся новая база данных (например, createdb blog ) PostgreSQL просто копирует шаблон базы данных. Есть два стандартных шаблона: template0 - ваниль, и template1 используемый по умолчанию. Один из вариантов изменения кодировки новой базы данных, заключается в изменении шаблона template1. Для этого, заходим в оболочку PostgresSQL (psql) и делаем вот что:

1. Первое, мы должны сбросить template1. Шаблоны не могут быть сброшены, так что мы сначала изменим его, как обычную базу данных:

2. Сейчас уже можно сбросить её:

3. Создаём новую базу данных, с новой кодировкой по умолчанию из template0:

4. Теперь снова сделаем template1 шаблоном:

5. (Рекомендация) Документация по PostgreSQL advises рекомендует "замораживать" изменения шаблона функцией VACUUM FREEZE:

6. (По желанию) Если вы не хотите, чтобы кто-либо подключался к этому шаблону, присвойте параметру datallowconn значение FALSE:

Теперь вы можете создать базу данных используя стандартные команды в терминале:

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

Решение проблем

Ускорение мелких транзакций

Если вы используете PostgreSQL на своей локальной машине для разработки и он медленный, то можете попробовать отключить synchronous_commit в конфигурации. Однако, не забывайте про его особенности.

Запретить запись на диск во время бездействия

PostgreSQL периодически обновляет свою статистику, лежащую в файле. По умолчанию этот файл находится на диске, что не даёт отдыхать (и изнашивает) жёсткому диску, заставляя его шуршать. Однако можно легко и безопасно поменять локацию файла внутрь ФС (/run) расположенной в ОЗУ с помощью такой настройки:

Postgre@Etersoft — это специальные сборки свободной реляционной СУБД PostgreSQL, в которые включены все изменения, необходимые для работы SELTA@Etersoft и серверов 1С:Предприятие 8.1 и 1С:Предприятие 8.2.

Об изменениях по отношению к оригинальной версии PostgreSQL смотрите в разделе Изменения, внесённые в PostgreSQL.

Вы можете приобрести поддержку Postgre@Etersoft на сайте продаж.

Поддерживаемые платформы

Платформы, для которых собран Postgre@Etersoft, можно увидеть на странице продукта при заказе сборки SELTA@Etersoft или Postgre@Etersoft. Обратите внимание, что в зависимости от выбора платформы, Вам будет предоставлена полная, либо базовая поддержка на вашей системе.


Приоритетными при тестировании и сборке новых версий являются платформы ALT Linux Server, Ubuntu Server, CentOS. Мы рекомендуем ставить PostgreSQL на них.

Пакеты доступны как в 32-битных, так и в 64-битных версиях.

Установка СУБД

Инструкция приводится на примере ALT Linux 5.0. Для других систем могут быть свои особенности.

  • Установка происходит под root
  • Готовим место под пакеты
  • Скачиваем пакеты, проверяем, что всё скачалось

Стабильные пакеты для различных систем можно получить здесь:

Устанавливаем пакеты

Для работы требуется установить следующие пакеты PostgreSQL:

  • postgresql-8.3eter
  • postgresql-8.3eter-contrib
  • postgresql-8.3-eter-server

Удаляем rpm, больше они не понадобятся:

Запускаем

Запускаем, при первом запуске инициализируемый postgres -- создается окружение баз данных

если этого не произошло, смотрите ошибки в логе запуска /var/lib/pgsql/pgstartup.log.

Возможные ошибки

Несоответствие SHMMAX и SHMALL

Значение SHMMAX (максимальный размер сегмента разделяемой памяти в байтах) слишком мало для запуска PostgreSQL.

Решение: Установите значение shmmax на указанное (или больше, если требуется согласно /var/lib/pgsql/pgstartup.log), внеся строку

Возможно придётся добавить ещё

После чего для вступления изменений в силу выполнить

Занятый порт

Одна из проблем, из-за которой может не запускаться PostgreSQL, может быть вызвана невозможностью использования выбранного порта.

PostgreSQL не смог запуститься:

И в /var/lib/pgsql/pgstartup.log

Это означает, что скорее всего порт, используемый PostgreSQL занят. По умолчанию это 5432.

Проверяем это, смотрим, кто использует порт

  1. Решить проблему с программой, которая использует порт. Изменить её порт.
  2. Изменить порт PostgreSQL.

Для этого нужно указать номер порта в файле /etc/sysconfig/postgresql, добавив строку

или любой другой удобный номер порта


Подробности по установке смотрите здесь:

Настройка PostgreSQL

В наших сборках PostgreSQL уже заложены необходимые минимальные настройки для работы СУБД с SELTA@Etersoft.

Инициализация базы производится автоматически при первом запуске PostgreSQL, файлы баз данных будут храниться в каталоге /var/lib/pgsql/data, владелец каталога и процессов PostgreSQL устанавливается пользователь postgres, который создается автоматически, при установке пакетов.

  • Для того, чтобы иметь возможность подключиться к нему, мы должны задать пароль главному пользователю СУБД - владельцу всех баз данных - postgres, это выполняется это следующим образом:

Сначала в файле конфигурации /var/lib/pgsql/data/pg_hba.conf изменяем строчку:

  • Сохраним изменения и перезапустим PostgreSQL, для вступлений изменений настроек, командой

Для этого требуется выполнить запрос.

  • Если вы хотите запретить локальный доверенный доступ (без пароля), поменяйте обратно настройки. Строчку "local all all trust" следует заменить обратно на "local all all ident sameuser" и перезапустить сервис постгри, чтобы отключить возможность подключения локальным пользователем без пароля.

Консоль SQL запросов PostgreSQL

В состав PostgreSQL входит утилита командной строки psql. Для её запуска на сервере, на котором работает PostgreSQL нужно выполнить следующую команду:

C помощью утилиты psql можно выполнять SQL запросы и просматривать результаты их выполнения, например:

Проверка работоспособности

Сервер запущен. Если, это не так, запустите сервер, так, как было описано выше.

Требующейся нам порт используется postmaster, как и должно быть.


После проверки работоспособности желательно провести оптимизацию настроек PostgreSQL в соответствии с возможностями вашего сервера: Оптимизация настроек PostgreSQL.

В этой статье я покажу как собрать PostgreSQL 13 версии из исходников, инициализировать кластер и запустить его на сервере Debian 10. А также установим из исходников одно из расширений PostgreSQL.

Источником для этой статьи служит данное видео.

Установка PostgreSQL из исходников

Работаем из под пользователя root, поэтому будьте осторожны!

Прежде всего скачаем и распакуем архив:

Далее, установим необходимые пакеты, соберем из исходников postgresql и установим его:

В результате, PostgreSQL у нас установится в каталог /usr/local/pgsql/, здесь лежат сами бинарники.

Создание переменных окружения

Для удобства работы с сервером нужно создать две переменные:

Чтобы эти переменные появились у всех пользователей отредактируем /etc/profile, добавив строки в конец файла:

Далее применим изменения:

Создание кластера БД

Дальнейшие действия нужно проделывать под пользователем postgres

Инициализируем кластер баз данных:

Опцию -k мы использовали, чтобы включить подсчет контрольной суммы страниц, что позволяет своевременно обнаружить повреждение данных. Остальные опции можете посмотреть тут!

После инициализации кластера у нас заполнился каталог PGDATA:

В этом каталоге лежат конфигурационные файлы кластера, и в подкаталоге base лежат базы данных. Но о содержимом этого каталога мы поговорим позже.

Запуск и останов сервера

Запустим сервер баз данных указав файл логов:

Здесь мы использовали две опции:

Подробнее о работе pg_ctl можете почитать тут.

Теперь проверим что PostgreSQL запустился и работает. Для этого выполним запрос select now() к СУБД:

В примере выше, функция now() показывает текущее время.

Останавливать и запускать сервер в последующем можно следующими командами:

Установка расширений из исходников

Следующим шагом научимся устанавливать расширения. Для этого перейдем в каталог с исходниками и найдём подкаталог contrib. В каталоге contrib лежат исходники расширений. Найдем каталог pgcrypto, перейдём в него и скомпилируем расширение:

В листинге выше с помощью утилиты psql мы подключаемся к СУБД, а с помощью команды \q отключаемся от него.

Создание второго кластера

На одном сервере может работать два кластера, для этого создаём каталог для второго кластера. И инициализируем его:

При инициализация кластера, если путь к каталогу PGDATA отличается от переменной $PGDATA или если такая переменная не задана. То нужно с помощью ключа -D указать путь к этому каталогу.

Теперь можем запустить второй кластер:

Посмотрим на процессы:

Первый кластер запущен без ключа -D и используется переменная PGDATA, а во втором кластере путь к PGDATA прописан в строке запуска.


Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи. Facebook

1- Удаленное подключение к Postgres

Иногда вы создаете удаленное подключение к базе данных Postgres и получаете уведомление об ошибке, подобное этому:

Причина состоит в том, что эта база данных принимает только локальные подключения, поэтому вам нужно настроить Postgres так, чтобы она принимала удаленные подключения.

Прежде чем мы начнем, важно знать, что есть два конфигурационных файла, контролирующих работу сервера базы данных Postgres, и вам нужно изменить некоторые параметры этих двух файлов.

  • /etc/postgresql/13/main (Linux)
  • C:/Program Files/PostgreSQL/13/data (Windows)

Файл postgresql.conf позволяет настроить IP-адреса, которые Postgres использует для прослушивания подключений к нему. По умолчанию Postgres прослушивает только адрес localhost, поэтому вы не можете удаленно подключиться к нему.


Откройте Terminal в Linux (Ubuntu и т. д.) и перейдите в папку, где находится файл postgresql.conf.


Для Linux (Ubuntu и т. д.) используйте команду nano, чтобы открыть и изменить файл postgresql.conf.




Вышеуказанное изменение позволяет Postgres прослушивать все IP-адреса компьютера, на котором они установлены. Вы также можете указать список адресов прослушивания (listen addresses) для Postgres, которые разделяются запятыми.

Затем нажмите CTRL + O --> ENTER, чтобы сохранить изменения, и CTRL + X, чтобы выйти из nano.

Файл pg_hba.conf используется для аутентификации клиента (client). Другими словами, он позволяет указать, какие клиенты могут подключаться к Postgres. HBA означает "Host-Based Authentication" (аутентификация на основе Хоста).

Для Linux (Ubuntu и т. д.) используйте команду nano, чтобы открыть и изменить файл pg_hba.conf:




Вышеуказанное изменение позволит всем клиентам (client) подключаться к Postgres.

Вы также можете настроить разрешение для диапазона IP-адресов для подключения к Postgres:

Наконец, перезапустите Postgres, чтобы изменения вступили в силу.

View more Tutorials:

Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.

Эта статья описывает как настроить PostgreSQL и интегрировать ее с PHP и Apache. Она также описывает, как сделать PostgreSQL доступным из клиента удалённого доступа. Считаем, что PHP и Apache уже установлены. Если вам нужна помощь настройки любой из этих программ, смотрите LAMP и следуйте всем разделам, кроме связанного с MySQL.

Contents

Установка PostgreSQL

  • Устанавливаем postgresql
  • Инициализируем кластер с нужной локалью (она должна быть доступна в системе). Обратите внимание, что в данном примере используем ru_RU.UTF-8
  • Если получили ошибку "Невозможно создать директорию, недостаточно прав", то изменяем владельца PGROOT директории и пробуем еще раз
  • Запускаем сервер PostgreSQL
  • Проверяем запустилось ли:
  • Дополнительно его можно добавить в автозагрузку

Создание Вашей первой базы данных

  • Становимся пользователем postgres (пользователь postgres не имеет пароля по умолчанию, поэтому таким вот образом)
  • Добавляем нового пользователя базы данных

-D Пользователь не может создавать базы данных
-R Пользователь не может создавать аккаунты
-S Пользователь не является суперпользователем
-P Запрашивать пароль при создании

С другой стороны, вы можете использовать команду createuser без параметров. Вывод в терминале выглядит так:

  • Если имя созданного пользователя совпадает с именем пользователя ($USER), вы получите доступ к базе данных оболочки PostgreSQL без указания имени пользователя (что весьма удобно).
  • Создаём новую базу данных. Создавать можно только от пользователя (например, postgres, за которого мы зашли), имеющего разрешение на чтение и запись (read/write). Если кодировку не указать, то она будет той, что вы указали в разделе «Установка PostgreSQL».
  • Вот и всё! Ваша база данных создана. Теперь можете уже под любым пользователем управлять БД:
  • Если имя базы данных И имя пользователя БД совпадают с текущим именем пользователя ($USER), то можно просто:

Знакомство с PostgreSQL

Доступ к оболочке базы данных

  • Становимся postgres пользователем, чтобы иметь возможность задать ваши права (как у основного пользователя)
  • Запускаем основную оболочку базы данных, в которой мы сможем создавать, удалять базы данных/таблицы, задавать права и запускать команды SQL.
  • Список всех возможных команд (например, CREATE TABLE ) для запросов
  • Подробное описание команды
  • Подключаем определённую базу данных
  • Список всех пользователей и их уровни доступа
  • Краткая информация о всех таблицах в текущей базе данных
  • Меняем пароль
  • Показать все используемые настройки
  • Выйти из psql

Есть, конечно, много других мета-команд, но именно эти должны помочь вам начать работу.

Настройка удалённого доступа к PostgreSQL

Файл настроек сервера баз данных PostgreSQL postgresql.conf . Этот файл находится в папке данных сервера, обычно /var/lib/postgres/data . В этой же папке находятся основные файлы настроек включая и pg_hba.conf .

Примечание: По умолчанию эта папка не доступна даже для просмотра (или поиска) от лица обычного пользователя.

Из-под пользователя root редактируем файл

В разделе connections and authentications раскомментируйте или исправьте строку listen_addresses по вашему желанию на

и внимательно просмотрите другие строки.
Далее добавляем следующую строку в основной файл настройки проверки подлинности /var/lib/postgres/data/pg_hba.conf . (если вы планируете подключатся только со своего компьютера, то пропустите данный шаг) Этот файл определяет, каким хостам разрешено подключаться, так что будьте осторожны.

где your_desired_ip_address — IP-адрес клиента.

После этого необходимо перезапустить демон, чтобы изменения вступили в силу

Примечание: PostgreSQL по умолчанию использует порт 5432 для удалённого доступа. Поэтому убедитесь, что этот порт открыт и может принимать входящие соединения.

Если возникли проблемы взгляните на лог-файл сервера

Не менее важные ошибки можно увидеть командой:

Настройка PostgreSQL для работы с PHP

  1. Установите модуль PHP-PostgreSQL
  2. Откройте файл /etc/php/php.ini в удобном для вас текстовом редакторе, например,
  3. Найдите строку, начинающуюся с ;extension=pgsql.so , и из неё уберите ; ( ; значит, что строка закомментирована). Если вы используете PDO, сделайте то же самое с ;extension=pdo.so и ;extension=pdo_pgsql.so . Если этих строк нет, добавьте их (без ; ). Эти строки надо искать в разделе файла «Dynamic Extensions» (по умолчанию) или в самом конце файла.
  4. Перезапустите веб-сервер Apache
  5. Либо, если у вас nginx + php-fpm, то

Настройка PostgreSQL для работы с HHVM

Если вы используете не ночную версию, то выполните это команду (проверено на HHVM 3.6.1), чтобы избежать ошибок компиляции:

Затем надо собрать (если улучшенная поддержка языка Hack не нужна, то уберите -DHACK_FRIENDLY=ON):

Скопируем скомпилированное расширение:

Затем в /etc/hhvm/server.ini добавляем:

Изменение кодировки новой базы данных на UTF-8 (по вашему усмотрению)

Когда создаётся новая база данных (например, createdb blog ) PostgreSQL просто копирует шаблон базы данных. Есть два стандартных шаблона: template0 - ваниль, и template1 используемый по умолчанию. Один из вариантов изменения кодировки новой базы данных, заключается в изменении шаблона template1. Для этого, заходим в оболочку PostgresSQL (psql) и делаем вот что:

1. Первое, мы должны сбросить template1. Шаблоны не могут быть сброшены, так что мы сначала изменим его, как обычную базу данных:

2. Сейчас уже можно сбросить её:

3. Создаём новую базу данных, с новой кодировкой по умолчанию из template0:

4. Теперь снова сделаем template1 шаблоном:

5. (Рекомендация) Документация по PostgreSQL advises рекомендует "замораживать" изменения шаблона функцией VACUUM FREEZE:

6. (По желанию) Если вы не хотите, чтобы кто-либо подключался к этому шаблону, присвойте параметру datallowconn значение FALSE:

Теперь вы можете создать базу данных используя стандартные команды в терминале:

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

Решение проблем

Ускорение мелких транзакций

Если вы используете PostgreSQL на своей локальной машине для разработки и он медленный, то можете попробовать отключить synchronous_commit в конфигурации. Однако, не забывайте про его особенности.

Запретить запись на диск во время бездействия

PostgreSQL периодически обновляет свою статистику, лежащую в файле. По умолчанию этот файл находится на диске, что не даёт отдыхать (и изнашивает) жёсткому диску, заставляя его шуршать. Однако можно легко и безопасно поменять локацию файла внутрь ФС (/run) расположенной в ОЗУ с помощью такой настройки:

Читайте также: