Как узнать порт postgresql windows
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.
Проверяем это, смотрим, кто использует порт
- Решить проблему с программой, которая использует порт. Изменить её порт.
- Изменить порт 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, которые описывают основные команды. Но при погружении глубже в работу возникают такие практические вопросы, для которых требуются продвинутые команды.
Такие команды, или сниппеты, редко описаны в документации. Рассмотрим несколько на примерах, полезных как для разработчиков, так и для администраторов баз данных.
Получение информации о базе данных
Размер базы данных
Чтобы получить физический размер файлов (хранилища) базы данных, используем следующий запрос:
Результат будет представлен как число вида 41809016 .
current_database() — функция, которая возвращает имя текущей базы данных. Вместо неё можно ввести имя текстом:
Для того, чтобы получить информацию в человекочитаемом виде, используем функцию pg_size_pretty :
В результате получим информацию вида 40 Mb .
Перечень таблиц
Иногда требуется получить перечень таблиц базы данных. Для этого используем следующий запрос:
information_schema — стандартная схема базы данных, которая содержит коллекции представлений (views), таких как таблицы, поля и т.д. Представления таблиц содержат информацию обо всех таблицах баз данных.
Запрос, описанный ниже, выберет все таблицы из указанной схемы текущей базы данных:
В последнем условии IN можно указать имя определенной схемы.
Размер таблицы
По аналогии с получением размера базы данных размер данных таблицы можно вычислить с помощью соответствующей функции:
Функция pg_relation_size возвращает объём, который занимает на диске указанный слой заданной таблицы или индекса.
Имя самой большой таблицы
Для того, чтобы вывести список таблиц текущей базы данных, отсортированный по размеру таблицы, выполним следующий запрос:
Для того, чтобы вывести информацию о самой большой таблице, ограничим запрос с помощью LIMIT :
relname — имя таблицы, индекса, представления и т.п.
relpages — размер представления этой таблицы на диске в количествах страниц (по умолчанию одна страницы равна 8 Кб).
pg_class — системная таблица, которая содержит информацию о связях таблиц базы данных.
Перечень подключенных пользователей
Чтобы узнать имя, IP и используемый порт подключенных пользователей, выполним следующий запрос:
Активность пользователя
Чтобы узнать активность соединения конкретного пользователя, используем следующий запрос:
Работа с данными и полями таблиц
Удаление одинаковых строк
Если так получилось, что в таблице нет первичного ключа (primary key), то наверняка среди записей найдутся дубликаты. Если для такой таблицы, особенно большого размера, необходимо поставить ограничения (constraint) для проверки целостности, то удалим следующие элементы:
- дублирующиеся строки,
- ситуации, когда одна или более колонок дублируются (если эти колонки предполагается использовать в качестве первичного ключа).
Рассмотрим таблицу с данными покупателей, где задублирована целая строка (вторая по счёту).
Удалить все дубликаты поможет следующий запрос:
Уникальное для каждой записи поле ctid по умолчанию скрыто, но оно есть в каждой таблице.
Последний запрос требователен к ресурсам, поэтому будьте аккуратны при его выполнении на рабочем проекте.
Старт 22 ноября, 4 месяца, Онлайн, От 35 000 до 100 000 ₽
Теперь рассмотрим случай, когда повторяются значения полей.
Если допустимо удаление дубликатов без сохранения всех данных, выполним такой запрос:
Если данные важны, то сначала нужно найти записи с дубликатами:
Перед удалением такие записи можно перенести во временную таблицу или заменить в них значение customer_id на другое.
Общая форма запроса на удаление описанных выше записей выглядит следующим образом:
Безопасное изменение типа поля
Может возникнуть вопрос о включении в этот список такой задачи. Ведь в PostgreSQL изменить тип поля очень просто с помощью команды ALTER . Давайте для примера снова рассмотрим таблицу с покупателями.
Но в результате выполнения получим ошибку:
ERROR: column “customer_id” cannot be cast automatically to type integer
SQL state: 42804
Hint: Specify a USING expression to perform the conversion.
В результате всё прошло без ошибок:
Обратите внимание, что при использовании USING кроме конкретного выражения возможно использование функций, других полей и операторов.
Например, преобразуем поле customer_id обратно в varchar , но с преобразованием формата данных:
В результате таблица примет следующий вид:
Поиск «потерянных» значений
Будьте внимательны при использовании последовательностей (sequence) в качестве первичного ключа (primary key): при назначении некоторые элементы последовательности случайно пропускаются, в результате работы с таблицей некоторые записи удаляются. Такие значения можно использовать снова, но найти их в больших таблицах сложно.
Рассмотрим два варианта поиска.
Первый способ
Выполним следующий запрос, чтобы найти начало интервала с «потерянным» значением:
В результате получим значения: 5 , 9 и 11 .
Если нужно найти не только первое вхождение, а все пропущенные значения, используем следующий (ресурсоёмкий!) запрос:
В результате видим следующий результат: 5 , 9 и 6 .
Второй способ
Получаем имя последовательности, связанной с customer_id :
И находим все пропущенные идентификаторы:
Подсчёт количества строк в таблице
Количество строк вычисляется стандартной функцией count , но её можно использовать с дополнительными условиями.
Общее количество строк в таблице:
Количество строк при условии, что указанное поле не содержит NULL :
Количество уникальных строк по указанному полю:
Использование транзакций
Транзакция объединяет последовательность действий в одну операцию. Её особенность в том, что при ошибке в выполнении транзакции ни один из результатов действий не сохранится в базе данных.
Начнём транзакцию с помощью команды BEGIN .
Для того, чтобы откатить все операции, расположенные после BEGIN , используем команду ROLLBACK .
А чтобы применить — команду COMMIT .
Просмотр и завершение исполняемых запросов
Для того, чтобы получить информацию о запросах, выполним следующую команду:
Для того, чтобы остановить конкретный запрос, выполним следующую команду, с указанием id процесса (pid):
Для того, чтобы прекратить работу запроса, выполним:
Работа с конфигурацией
Поиск и изменение расположения экземпляра кластера
Возможна ситуация, когда на одной операционной системе настроено несколько экземпляров PostgreSQL, которые «сидят» на различных портах. В этом случае поиск пути к физическому размещению каждого экземпляра — достаточно нервная задача. Для того, чтобы получить эту информацию, выполним следующий запрос для любой базы данных интересующего кластера:
Изменим расположение на другое с помощью команды:
Но для того, чтобы изменения вступили в силу, требуется перезагрузка.
Получение перечня доступных типов данных
Получим перечень доступных типов данных с помощью команды:
typname — имя типа данных.
typlen — размер типа данных.
Изменение настроек СУБД без перезагрузки
Настройки PostgreSQL находятся в специальных файлах вроде postgresql.conf и pg_hba.conf . После изменения этих файлов нужно, чтобы СУБД снова получила настройки. Для этого производится перезагрузка сервера баз данных. Понятно, что приходится это делать, но на продакшн-версии проекта, которым пользуются тысячи пользователей, это очень нежелательно. Поэтому в PostgreSQL есть функция, с помощью которой можно применить изменения без перезагрузки сервера:
Но, к сожалению, она применима не ко всем параметрам. В некоторых случаях для применения настроек перезагрузка обязательна.
Мы рассмотрели команды, которые помогут упростить работу разработчикам и администраторам баз данных, использующим PostgreSQL. Но это далеко не все возможные приёмы. Если вы сталкивались с интересными задачами, напишите о них в комментариях. Поделимся полезным опытом!
Установка PostgreSQL 11 в Windows 10
В процессе установки установите галочки на пунктах:
- PostgreSQL Server – сам сервер СУБД
- PgAdmin 4 – визуальный редактор SQL
- Stack Builder – дополнительные инструменты для разработки (возможно вам они понадобятся в будущем)
- Command Line Tools – инструменты командной строки
Установите пароль для пользователя postgres (он создается по умолчанию и имеет права суперпользователя).
По умолчание СУБД слушает на порту 5432, который нужно будет добавить в исключения в правилах фаерволла.
Нажимаете Далее, Далее, на этом установка PostgreSQL завершена.
Доступ к PostgreSQL по сети, правила файерволла
Чтобы разрешить сетевой доступ к вашему экземпляру PostgreSQL с других компьютеров, вам нужно создать правила в файерволе. Вы можете создать правило через командную строку или PowerShell.
Запустите командную строку от имени администратора. Введите команду:
netsh advfirewall firewall add rule name="Postgre Port" dir=in action=allow protocol=TCP localport=5432
- Где rule name – имя правила
- Localport – разрешенный порт
Либо вы можете создать правило, разрешающее TCP/IP доступ к экземпляру PostgreSQL на порту 5432 с помощью PowerShell:
New-NetFirewallRule -Name 'POSTGRESQL-In-TCP' -DisplayName 'PostgreSQL (TCP-In)' -Direction Inbound -Enabled True -Protocol TCP -LocalPort 5432
После применения команды в брандмауэре Windows появится новое разрешающее правило для порта Postgres.
Измените значение в пункте port = 5432 . Перезапустите службу сервера postgresql-x64-11 после изменений. Можно перезапустить службу с помощью PowerShell:
Restart-Service -Name postgresql-x64-11
Более подробно о настройке параметров в конфигурационном файле postgresql.conf с помощью тюнеров смотрите в статье.
Утилиты управления PostgreSQL через командную строку
Рассмотрим управление и основные операции, которые можно выполнять с PostgreSQL через командную строку с помощью нескольких утилит. Основные инструменты управления PostgreSQL находятся в папке bin, потому все команды будем выполнять из данного каталога.
-
Запустите командную строку.
Основные команды PostgreSQL:
- Проверка установленной версии СУБД: psql –V
- Для создания новой базы данных воспользуйтесь утилитой createdb: createdb -U postgres testdb (где postgres суперпользователь, testdb новая база данных)Введите пароль суперпользователя.
- Проверить список активных баз: Psql -U postgres –l (пароль)
- С помощью инструмента createuser cоздадим нового пользователя: createuser –U postgres operator (где operator -имя нового пользователя)
- Предоставим пользователю привилегии суперпользователя (на практике этого делать не надо). Запустите интерактивную командную оболочку управления PostgreSQL (shell): psql –U postgres . С помощью SQL команды ALTER ROLE предоставим нужные права нашему пользователю: ALTER ROLE operator SUPERUSER CREATEROLE CREATEDB; . Мы предоставили пользователю права суперпользователя, права на создание ролей и баз данных.
- Для выводы списка пользователей и ролей в СУБД выполните команду: \du
PgAdmin: Визуальный редактор для PostgresSQL
Редактор PgAdmin служит для упрощения управления базой данных PostgresSQL в понятном визуальном режиме.
- Для запуска редактора запустите PgAdmin 4 в меню Пуск
- Для доступа нужно ввести пароль суперпользователя postgres
- В панели Servers вы можете раскрыть список активных БД.
- В панели управления возможно быстро создать нового пользователя и группу, предоставить ему права. Для этого Откройте меню Object -> Create -> Create Login/Group.
- Для создания новой базы данных достаточно выбрать: Database в меню Object -> Create. В новом поле указать имя базы и владельца.
По умолчанию все созданные базы хранятся в каталоге base по пути C:\Program Files\PostgreSQL\11\data\base.
Для каждой БД существует подкаталог внутри PGDATA/base, названный по OID базы данных в pg_database. Этот подкаталог по умолчанию является местом хранения файлов базы данных; в частности, там хранятся её системные каталоги. Каждая таблица и индекс хранятся в отдельном файле.
Для резервного копирования и восстановления лучше использовать инструмент Backup в панели инструментов Tools. Для автоматизации бэкапа PostgreSQL из командной строки используйте утилиту pg_dump.exe.
Query Tool: использование SQL запросов в PostgreSQL
Для написания SQL запросов в удобном графическом редакторе используется встроенный в pgAdmin инструмент Query Tool. Например, вы хотите создать новую таблицу в базе данных через инструмент Query Tool.
- Выберите базу данных, в панели Tools откройте Query Tool
- Создадим таблицу сотрудников:
CREATE TABLE employee
(
Id SERIAL PRIMARY KEY,
FirstName CHARACTER VARYING(30),
LastName CHARACTER VARYING(30),
Email CHARACTER VARYING(30),
Age INTEGER
);
После того, как написали код SQL запроса в Query Tool, нажмите клавишу F5 и в базе будет создана новая таблица employee.
Для заполнения полей в свойствах таблицы выберите таблицу employee в разделе Schemas -> Tables. Откройте меню Object инструмент View/Edit Data.
Здесь вы можете заполнить данные в таблице.
После заполнения данных выполним инструментом Query простой запрос на выборку:
select Age from employee;
Для управления сервером баз данных PostgreSQL есть много разных инструментов, но при установки сервера по умолчанию устанавливается только утилита psql. Это консольная утилита с помощью которой можно подключится к серверу баз данных и начать с ним работать.
Официальную документацию по этой утилите вы можете найти тут и тут! А в этой статье даны некоторые практические примеры для её использования.
Подключение к серверу баз данных
Итак, утилита psql позволяет вам управлять сервером баз данных PostgreSQL. Но вначале нужно подключиться к серверу. Подключиться с помощью этой утилиты вы можете к локально установленному серверу, или удалённому используя сеть. Подключение выполняется таким способом:
По умолчанию при подключении вы используете:
Таким образом если вы в системе находитесь под пользователем postgres, то следующие команды будут равнозначными:
Для получения информации о узле к которому вы подключены используется команда \conninfo:
Не выходя из терминала psql вы можете подключится к другому узлу с помощью команды \c <база> <роль> <узел> <порт> .
Чтобы выйти из терминала psql можно использовать 2 равносильные команды \q и exit .
Получение справочной информации
Получить справку о psql из ОС можно следующими способами:
Вы можете получить справку находясь в терминале psql такими способами:
Файлы, которые использует psql
.psqlrc
При входе в psql будут выполнятся команды записанные в
/.psqlrc. Этого файла может и не быть, но если он будет создан в домашнем каталоге пользователя, то psql будет его читать при каждом подключении к серверу.
Вот некоторые примеры настроек, которые можно ввести в
Настраивая приглашение PROMPT1 и PROMPT2 используются следующие символы:
В качестве практики давайте настроим свой .psqlrc:
Как видим выше, после каждого запроса выводится время его выполнения. Также в приглашении ввода команды видно имя пользователя и имя базы.
.psql_history
Другой полезный файл это
/.psql_history. В нем хранится история команд введенных в терминале psql. Перемещаться по истории команд в терминале psql можно клавишами вверх и вниз. Количество хранимых команд изменяется установкой переменной HISTSIZE.
Формат выводимой информации
Когда вы вводите и выполняете какой-нибудь запрос в терминале psql, то в выводе видите результат этого запроса. По умолчанию такой вывод показывается в форме таблички. Но вы можете настроить формат выводимой информации сами:
Например, получим информацию из представления pg_tables. Затем поменяем формат и снова получим информацию. А затем все вернем на место:
А вот пример использования расширенного режима (\x). Выглядит это так, как будто табличку перевернули:
Взаимодействие psql с операционной системой
Можно установить переменную окружения в систему с помощью команды \setenv:
В предыдущем листинге с помощью последней команды мы выключили расширенный режим.
В примере выше мы проделали следующее:
Переменные окружения
В примере выше мы результат функции now() записали в переменную curr_time!
Читайте также: