Установка postgresql

Excel Add-in for PostgreSQL

Description License Pricing Publisher  

Devart Excel Add-in for PostgreSQL allows you to quickly and easily connect Microsoft Excel to PostgreSQL, load data from PostgreSQL to Excel, instantly refresh data in an Excel workbook from the database, edit these data, and save them back to PostgreSQL.

It enables you to work with PostgreSQL data like with usual Excel worksheets, easily perform data cleansing and de-duplication, and apply all the Excel’s powerful data processing and analysis capabilities to these data.

Connect to PostgreSQL Directly from Excel

To connect Excel to PostgreSQL you just need to specify its host, port, and your credentials.
As for security, PostgreSQL Excel Add-in supports secure SSL connections, secure authentication with single sign-on, etc.

Use Query Builder or SQL to Import Data You Need

Visual Query Builder allows you to choose a table to import data from, select the columns from this table and related tables, and set filter conditions and data ordering options visually. If you need to select data more precisely, you can use SQL to select data you need.

Instantly Refresh Data Whenever You Need

It’s very convenient to always have fresh data from the database right in your workbook. Imagine, you have performed data analysis in your Excel workbook, built some charts for your PostgreSQL data, and you can re-read data from the source and update all this to the current state by just clicking a button on the ribbon whenever you need.

Instant Data Validation

Excel Add-in for PostgreSQL instantly validates entered data and highlights errors, such as incorrect dates, duplicate primary key values, etc.

Learn more about Excel add-in for PostgreSQL on Devart website.

Commercial $99.95 Devart View

Обозначения

  • RAM — объем оперативной памяти сервера. Если сервер используется не только для PostgreSQL, то надо уменьшить эту величину на объем занятой памяти.
  • NCores — суммарное число ядер на всех CPU сервера
  • max_connections — максимальное число коннектов (или сессий) к PgSQL. Задается в конфигурационном файле.
  • WAL — Write Ahead Log, опережающий лог действий с таблицами и индексами. Основная задача — целостность и отказоустойчивость  базы данных при одновременном росте производительности.
  • checkpoint — точка восстановления база данных. Все WAL данные, записанные до checkpoint становятся не нужны.
  • X..Y — диапазон значений от X до Y включительно

Подготовка серверов

Для начала, готовим наши серверы к настройке кластера.

PostgreSQL

На всех серверах баз данных должна быть установлена одна и та же версия PostgreSQL. Также, все серверы должны иметь одну и ту же архитектуру процессора.

Вот пример установки сервера PostgreSQL на CentOS 7.

Брандмауэр

При использовании брандмауэра, необходимо открыть TCP-порт 5432 — он используется сервером postgre.

а) Если управление выполняется с помощью Firewalld:

firewall-cmd —permanent —add-port=5432/tcp

firewall-cmd —reload

б) Если используем Iptables:

iptables -A INPUT -p tcp —dport 5432 -j ACCEPT

в) Если используем UFW:

ufw allow 5432/tcp

SELinux

Если активирована система безопасности SELinux (по умолчанию в системах Red Hat / CentOS / Fedora), отключаем ее:

setenforce 0

sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

Если необходимо, чтобы SELinux работал, настраиваем его.

Установка PostgreSQL 13 на Ubuntu Server 20.04

Итак, давайте перейдем к установке и рассмотрим все шаги, которые необходимо выполнить, чтобы установить PostgreSQL 13 на Ubuntu Server 20.04.

Установку я буду производить удаленно, для подключения к Ubuntu Server буду использовать программу PuTTY.

Шаг 1 – Подключение репозитория и обновление списка пакетов в системе

Установку и настройку PostgreSQL необходимо выполнять с правами пользователя root, поэтому давайте сразу переключимся на root.

Для этого пишем команду sudo -i и вводим пароль.

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

Однако, если Вам требуется установить не самую последнюю версию, то на этапе установки пакетов нужно будет указать номер версии в названии пакета, чуть ниже, на соответствующем шаге, я поясню, где именно необходимо указать номер конкретной версии.

Для подключения репозитория вводим следующую команду, которая создает файл в источниках с адресом нужного репозитория.

 
    sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

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

 
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Осталось обновить список пакетов в системе, это делаем стандартной командой.

   
   apt-get update

И для проверки того, что теперь нам доступны пакеты PostgreSQL 13, давайте запустим команду поиска пакетов.

   
   apt-cache search postgresql-13

Нужные пакеты нам доступны, и мы можем переходить к установке PostgreSQL 13.

Шаг 2 – Установка необходимых пакетов для PostgreSQL

Для установки актуальной версии, т.е. PostgreSQL 13 и базовых стандартных утилит, необходимо установить пакет postgresql, это делается следующей командой.

   
   apt-get -y install postgresql

Чтобы установить какую-то конкретную версию PostgreSQL, необходимо указать номер этой версии в названии пакета, например, для 12 версии необходимо установить пакет postgresql-12.

Шаг 3 – Проверка установки

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

   
   systemctl status postgresql

Как видим, PostgreSQL 13 установился и работает.

Администрирование конфигураций 1С (недокументированные особенности работы)

Многие мои коллеги по работе и по профессии, уверен, сталкиваются с аналогичными ситуациями, когда программа 1С при работе с конфигурацией, мягко говоря, работает «странно». Как говорит один хороший знакомый (к слову, один из авторов УТ 11):
— «вот, ну согласись, нанять пару серьезных методистов — реальных дядечек с реального производства, до начала разработки — единственная ЭЛЕМЕНТАРНАЯ политика, как можно было этого не сделать???? там их НЕТ. Причем это 0 в плане затрат на разработку, там нет ограничений бюджета, это просто самый тупой прокол.»
В этой статье приведу способы лечения пресловутых проколов (за последний месяц).

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе

Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии

Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

Настройка с доступом по паролю

Настройка пользователя postgres

Задайте пароль для пользователя :

psql -U postgres

psql (11.2)
Введите "help", чтобы получить справку.
postgres=# \password
Введите новый пароль:
Повторите его:
postgres=# \q

Настройка доступа к базам

Выполните настройки доступа к SQL-серверу, разрешив доступ только локальным запросам и из локальной сети 192.168.0.0/24:

/etc/postgresql-11/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     password
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
host    all             all             192.168.0.0/24          password
# IPv6 local connections:
#host   all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local  replication     all                                     trust
#host   replication     all             127.0.0.1/32            trust
#host   replication     all             ::1/128                 trust

Через запятую укажите IP-адреса, которые должен слушать сервер PostgreSQL:

/etc/postgresql-11/postgresql.conf

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '192.168.0.1,127.0.0.1' # what IP address(es) to listen on;
                                           # comma-separated list of addresses;
                                           # defaults to 'localhost'; use '*' for all
                                           # (change requires restart)

Заметка

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

Перезагрузите сервис баз данных:

/etc/init.d/postgresql-11 restart

postgresql-11 | * Stopping PostgreSQL 11 (this can take up to 92 seconds) ...  ok 
postgresql-11 | * /run/postgresql: correcting mode
postgresql-11 | * Starting PostgreSQL 11 ...                                   ok 

Проверьте, какие порты работают:

netstat -an

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0      0 192.168.0.1:5432        0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 127.0.0.1:41006         127.0.0.1:41006         ESTABLISHED
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2           STREAM     LISTENING     281718   /run/postgresql/.s.PGSQL.5432

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

Создайте базу данных dbtest и пользователя test для работы с ней:

psql -U postgres

Пароль пользователя postgres: 
psql (11.2)
Введите "help", чтобы получить справку.

postgres=# create database dbtest;
CREATE DATABASE
postgres=# create role test with login;
CREATE ROLE
postgres=# \password test
Введите новый пароль: 
Повторите его: 
postgres=# grant connect, create on database dbtest to test;
GRANT
postgres=# \l dbtest
                                 Список баз данных
    Имя    | Владелец | Кодировка | LC_COLLATE |  LC_CTYPE  |     Права доступа     
-----------+----------+-----------+------------+------------+-----------------------
 dbtest    | postgres | UTF8      | ru_RU.utf8 | ru_RU.utf8 | =Tc/postgres         +
           |          |           |            |            | postgres=CTc/postgres+
           |          |           |            |            | test=Cc/postgres
(1 строка)

postgres=# \q

Необходимая база и пользователь созданы.

Проверьте подключение к базе данных:

psql -U test -d dbtest

Пароль пользователя test:
psql (11.2)
Введите "help", чтобы получить справку.

test=> \q

Копирование числовых ячеек из 1С в Excel Промо

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

Шаг 7 — Добавление, запрос и удаление данных в таблице

Теперь, когда у вас есть таблица, вы можете ввести в нее данные .

В качестве примера добавьте строги swing (качели) и slide (горка), вызвав таблицу, куда вы хотите добавить данные, указав столбцы и предоставив данные для каждого столбца:

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

Еще один момент, который необходимо учитывать, состоит в том, что вы не должны указывать значения для столбца . Это объясняется тем, что они автоматически генерируются всякий раз, когда в таблице создается новая строка.

Получите добавленную вами информацию, введя следующую команду:

Вы можете убедиться, что столбец уже заполнен успешно, а все другие данные были организованы корректно.

Если же строка slide в таблице разрывается, вы можете удалить строку из таблицы, использовав следующую команду:

Запросите таблицу еще раз:

Вы видите, что ваш строка slide уже не является частью таблицы.

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

Если «веб морда» расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С — это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

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

Файл настроек сервера баз данных PostgreSQL . Этот файл находится в папке данных сервера, обычно . В этой же папке находятся основные файлы настроек включая и .

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

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

$ sudoedit /var/lib/postgres/data/postgresql.conf

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

listen_addresses = '*'

либо

listen_addresses = 'localhost,ip_у_сервера_в_сети'

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

# IPv4 local connections:
host   all   all   your_desired_ip_address/32   trust

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

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

$ systemctl restart postgresql

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

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

$ journalctl -u postgresql

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

$ systemctl status postgresql.service

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

Обработка удаления помеченных объектов с расширенным функционалом. Работает в обычном и управляемом приложении. Монопольный и разделенный режим работы. Отображение и отбор по структуре метаданных. Отборы данных произвольными запросами. Копирование и сохранение отборов. Удаление циклических ссылок (рекурсия). Представление циклических в виде дерева с отображением ключевых ссылок, не позволяющих удалить текущий объект информационной базы. Удаление записей связанных независимых регистров сведений. Групповая замена ссылок. Индикатор прогресса при поиске и контроле ссылочности.

10 стартмани

Автокликер для 1С

Внешняя обработка, запускаемая в обычном (неуправляемом) режиме для автоматизации действий пользователя (кликер). ActiveX компонента, используемая в обработке, получает события от клавиатуры и мыши по всей области экрана в любом приложении и транслирует их в 1С, получает информацию о процессах, текущем активном приложении, выбранном языке в текущем приложении, умеет сохранять снимки произвольной области экрана, активных окон, буфера обмена, а также, в режиме воспроизведения умеет активировать описанные выше события. Все методы и свойства компоненты доступны при непосредственной интеграции в 1С. Примеры обращения к компоненте представлены в открытом коде обработки.

1 стартмани

postgresql-kit

Description License Pricing Publisher  

postgresql-kit is a set of frameworks, tools, applications and examples for deploying the PostgreSQL database on Mac OS X and iOS platforms.

On the server-side, it provides an embedded server framework which allows you to put a postgresql database right in your Cocoa application. On the client-side, it helps you interact and use all the features of libpq, including converting data seemlessly between Foundation objects and Postgresql data types.

Sample applications for the Macintosh and iOS devices is included in the project, which is licensed with the Apache open-source license.

Open source mutablelogic View

НАСТОЙКА РЕПЛИКАЦИИ POSTGRESQL

Сначала настроем мастер-сервер. Это основной сервер, который будет выполнять основные действия записи и рассылать данные на сервера Salve. Приложения могут не только читать, но и записывать данные взаимодействуя с этим сервером. Для его настройки нам нужно изменить содержимое файла postgresql.conf в папке /etc/postgresql/9.6/main/:

Сначала расскоментируйте строчку listen_address и пропишите в ней ip адрес вашего сервера. Порт должен быть 5433 иначе не заработает:

Расскоментируйте строчку wal_level и установите значение standby, она отвечает за способ репликации:

Мы будем использовать локальную синхронизацию:

Включите режим архивирования и укажите команду для создания архива:

Теперь настроем куда именно будет выполняться синхронизация. В нашей инструкции мы будем использовать только два сервера — Master и Salve. Поэтому в строке max_wal_senders поставьте значение 2:

Установите имя нашего сервера синхронизации:

Теперь конфигурационный файл можно закрыть. Поскольку мы включили режим архивирования, нужно создать папку для архивов и отдать ее пользователю postgres:

Дальше нам нужно отредактировать файл pg_hba.conf, он отвечает за аутентификацию пользователей. Здесь нужно прописать каждый сервер, базу данных, адрес и метод аутентификации. Синтаксис файла такой:

host база_данных пользователь ip_адрес метод опции

После всех настроек нужно перезапустить службу:

Дальше нам нужно создать нового пользователя, у которого будут права на репликацию. Назовите его replica:

После всех этих действий настройка репликации postgresql на сервере Master завершена и он готов к работе. Дальше настроем сервер Salve. Тут все проще. Мы собираемся заменить директорию data этого сервера, на эту же директорию из сервера master и поддерживать их синхронизацию. Сначала остановите службу:

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

Затем авторизуйтесь от имени пользователя postgres и скопируйте все данные из сервера Master:

Вам нужно будет ввести пароль и дождаться пока будут загружены данные. Дальше нужно исправить настройки /etc/postgresql/9.6/main/postgresql.conf:

Включите hot_standby:

И укажите ip адрес этого сервера в строке listen_address:

Это все, можете сохранить изменения и закрыть файл. Затем создайте файл /etc/postgresql/9.6/main/recovery.conf:

Эти настройки нужны для восстановления базы данных в случае возникновения проблем. Осталось запустить службу postgresql на другой машине:

Дальше осталось только протестировать как работает потоковая репликация postgresql.

Настройка Postgresql в Ubuntu

Вы знаете как установить Postgresql Ubuntu, но этого недостаточно для начала полноценной работы. Первым делом, откройте терминал и переключите его на пользователя postgres с помощью команды:

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

Это очень похоже на учетные записи Unix, но программа не различает пользователей и групп, есть только роли. Сразу после установки Postgresql пытается связать свои роли с системными учетными записями, если для имени системной учетной записи существует роль, то пользователь может войти в консоль управления и выполнять позволенные ему действия. Таким образом, после переключения на пользователя postgres вы можете войти в консоль управления:

И посмотреть информацию о соединении:

Чтобы выйти наберите:

Теперь давайте рассмотрим как создать другие роли и базы данных.

Создание роли Postgresql

Вы уже можете полноценно работать с базой данных с помощью учетной записи postgres, но давайте создадим дополнительную роль. Учетная запись postgres является администратором, поэтому имеет доступ к функциям управления. Для создания пользователя выполните:

Скрипт задаст лишь два вопроса, имя новой роли и нужно ли делать ее суперпользователем.

Создание базы данных

Точно также как имена ролей сопоставляются с системными пользователями, имя базы данных будет подбираться по имени пользователя. Например, если мы создали пользователя segiy, то по умолчанию система попытается получить доступ к базе данных segiy. Мы можем ее очень просто создать:

Дальше, чтобы подключиться к этой базе данных нам нужно войти от имени одноименного пользователя:

Заходим в консоль и смотрим информацию о подключении:

Все верно сработало. Мы подключились с помощью роли segiy к базе segiy. Если нужно указать другую базу данных, вы можете сделать это с помощью опции -d, например:

Все сработало верно, при условии, что все компоненты были настроены как описано выше.

Создание таблиц

Теперь, когда вы знаете как подключится к базе данных Postgresql давайте рассмотрим как выполняются основные задачи. Сначала разберем создание таблиц для хранения некоторых данных. Для создания таблицы Postgresql используется такой синтаксис:

CREATE TABLE имя таблицы (имя_колонки1 тип_колонки ( длина ) ограничения ,имя_колонки2 тип_колонки ( длина ),имя_колонки3 тип_колонки ( длина ));

Как видите, сначала мы задаем имя таблицы, затем описываем каждый столбец. Столбец должен иметь имя, тип и размер, также можно задать ограничения для данных, которые там будут содержаться. Например:

Мы создали таблицу детской площадки для описания оборудования, которое на ней есть. Сначала идет идентификатор equip_id, который имеет тип serial, это значит что его значение будет автоматически увеличиваться, ключ primary key значит, что значения должны быть уникальны.

Следующие колонки — обычные строки, для них мы задаем длину поля, они не могут быть пустыми (NOT NULL). Следующий столбец тоже строка, но она может содержать только одно из указанных значений, последний столбец — дата создания.

Вы можете вывести все таблицы, выполнив команду:

Здесь мы видим что кроме нашей таблицы, существует еще одна переменная — playground_equip_id_seq. В ней содержится последнее значение этого поля. Если нужно вывести только таблицы, выполните:

Вставка и удаление данных

У нас есть таблица, но пока что она пуста. Мы можем добавить в нее некоторые данные. Давайте добавим пункт, описывающий качели. Для этого используются такие команды:

Заметьте, что имена столбцов не обязательно заключать в кавычки, а вот имена значений — обязательно. Теперь смотрим что получилось:

Удалять записи можно по любому критерию, например, удалим записи, поле type которых имеет значение slide:

И снова смотрим что получилось:

Настройка PostgreSQL 13 в Ubuntu Server 20.04

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

Создание пользователя и базы данных в PostgreSQL

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

Давайте переключимся на пользователя postgres (данная учетная запись была создана автоматически во время установки PostgreSQL).

   
   su - postgres

Затем запускаем утилиту psql – это консоль для PostgreSQL.

   
   psql

Первым делом нам нужно задать пароль для пользователя postgres.

   
   \password postgres

Затем создаем нового пользователя на сервере PostgreSQL, так как работать от имени postgres крайне не рекомендуется.

   
   create user info_comp with password '123456';

где info_comp – это имя пользователя, ‘123456’ – это его пароль, Вы, соответственно, придумываете и подставляете свои данные.

Далее давайте создадим базу данных.

   
    create database test_db;

где test_db – это имя новой базы данных.

Теперь давайте дадим права на управление базой данных нашему новому пользователю.

   
   grant all privileges on database test_db to info_comp;

Все готово, выходим из консоли.

   
    \q

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

   
    psql -h localhost test_db info_comp

Все работает, я подключился. Для выхода снова набираем \q.

   
    \q

Для переключения обратно на root вводим exit.

   
    exit

Разрешаем подключение к PostgreSQL по сети

По умолчанию PostgreSQL прослушивает только адрес localhost, поэтому, для того чтобы мы могли подключаться по сети, нам нужно указать, какие сетевые интерфейсы будет просушивать PostgreSQL. Я для примера укажу, что прослушивать нужно все доступные интерфейсы. Если у Вас несколько сетевых интерфейсов, и Вы хотите, чтобы PostgreSQL использовал только один конкретный, то Вы его можете указать именно здесь.

Чтобы это сделать, открываем файл postgresql.conf, например, редактором nano.

   
    nano /etc/postgresql/13/main/postgresql.conf

Находим следующую строку.

   
     #listen_addresses = 'localhost'

и вносим следующие изменения (вместо звездочки Вы в случае необходимости указываете IP адрес нужного интерфейса).

   
    listen_addresses = '*'

Сохраняем изменения сочетанием клавиш CTRL+O и подтверждаем нажатием Enter, затем просто закрываем редактор nano сочетанием клавиш CTRL+X.

Теперь давайте разрешим подключение из сети, я для примера разрешу подключаться из сети 192.168.0.0/24 с методом аутентификации md5.

Для этого открываем файл pg_hba.conf

   
    nano /etc/postgresql/13/main/pg_hba.conf

Ищем следующие строки.

И указываем нужную нам сеть (если IPv6 Вы не будете использовать, то можете закомментировать соответствующие строки знаком #).

Далее точно так же сохраняем изменения сочетанием клавиш CTRL+O, подтверждаем нажатием Enter и закрываем редактор nano сочетанием клавиш CTRL+X.

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

   
    systemctl restart postgresql

Теперь можно подключаться к нашему серверу PostgreSQL удаленно по сети.

Таким образом, мы установили и настроили систему управления базами данных PostgreSQL 13 на операционной системе Ubuntu Server 20.04.

В следующем материале мы рассмотрим процесс установки на клиентский компьютер инструментов для работы с базами данных PostgreSQL и настроим удаленное подключение к PostgreSQL 13.

Настройка PostgreSQL

Чтобы установленный PostgreSQL работал с CollectionSpace, необходимо настроить пользователей и изменить некоторые параметры.

  • Найдите конфигурационный файл pg_hba.conf. Он расположен в подкаталоге data каталога, в котором установлена PostgreSQL;
  • Откройте этот файл в текстовом редакторе и следуйте приведенным ниже инструкциям;

В Mac OS X по умолчанию это папка /Library/PostgreSQL/9.1. В Mac OS X нужно иметь права супер пользователя, чтобы редактировать любой из следующих файлов конфигурации.

Убедитесь, что для «local section» указано последнее слово md5, а не ident:

# "local" is for Unix domain socket connections only
local   all             all                                     md5

Измените раздел «IPv4 local connections» следующим образом:

# IPv4 local connections:
host    all             csadmin         samehost                md5

Это ограничивает набор пользователей PostgreSQL, которым предоставляется локальный доступ к трем базам данных, используемым CollectionSpace: jbossdb, nuxeo и cspace. Например, только пользователь с именем cspace или супер пользователь PostgreSQL с именем postgres может получить доступ к базе данных cspace с локальной машины.

При установке PostgreSQL 9.x на Windows 7 может не принять термин samehost в столбце CIDR-ADDRESS. Если это произойдет, используйте адресную форму 127.0.0.1/32:

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

Убедитесь, что записи в разделе «IPv6 local connections» отключены. В качестве первого символа в строках указывается символ хэш (#), если только в вашей системе не активен IPv6:

# IPv6 local connections:
#host    all             all             ::1/128                 md5

Современные системы, работающие под управлением Windows 7 и Windows Vista, могут поставляться с включенным по умолчанию IPv6. Если в вашей системе включен IPv6, можно поэкспериментировать со следующей конфигурацией — указать ::1/128 для адреса localhost:

# IPv6 local connections:

host    all             csadmin        ::1/128                 md5

Если нужно разрешить создание отчетов при подключении к БД с удаленных хостов, тогда следует добавить запись, подобную приведенной ниже, но указав свой адрес подсети. Приведенная ниже конфигурация позволит создавать отчеты удаленно с хостов в определенной подсети UC Berkeley. Для получения дополнительной информации о том, как указать адрес подсети, ознакомьтесь с документацией по pg_hba.conf для используемого релиза PostgreSQL.

host    all           cspace_reader          169.229.0.0/16          md5

Чтобы автор отчетов мог работать, придется внести еще одно изменение в значение listen_addresses в файле postgresql.conf. Подробнее о поиске этого файла рассказано ниже.

Если вы можете контролировать доступ к PostgreSQL через брандмауэр, то проще ввести значение listen_addresses «*». Для большей безопасности можно ввести список разделенных запятыми IP-адресов, с которых будут связываться авторы отчетов.

Далее после PostgreSQL установки и настройки Windows нужно внести изменения в конфигурационный файл PostgreSQL:

  • Найдите файл postgresql.conf, находящийся в папке data каталога, в котором установлен PostgreSQL;
  • Откройте этот файл в текстовом редакторе и внесите следующие изменения:
max_prepared_transactions = 64

Значение переменной max_prepared_transactions, равное 64, может оказаться большим для вашей системы. Если это так, установите меньшее значение.

Если это значение действительно слишком велико для вашей системы, вы получите сообщение об ошибке при перезапуске PostgreSQL:Restarting PostgreSQL … database server: main The PostgreSQL server failed to start. Please check the log output … FATAL: could not create shared memory segment: …

Windows version-specific issues

Can I install a 32-bit PostgreSQL on 64-bit Windows?

Recent 32-bit versions of PostgreSQL (8.3 and newer) can be installed and used on 64-bit Windows XP and above,
though they retain the 32-bit limits on maximum process address space (and thus shared memory).

You can connect to the 32-bit postgresql server from 64-bit programs on the computer the server is running on
or other computers if a 64-bit libpq or psqlODBC driver is installed where the program is running.

Because 32-bit versions of the PostgreSQL server only install a 32-bit libpq and pgsqlODBC, only 32-bit programs
on the computer the server was installed on can use the database unless a 64-bit ODBC driver or libpq
is installed as an add-on.

Where is the PostgreSQL ODBC driver? I’m running 32-bit PostgreSQL on 64-bit Windows

You need to use the 32-bit ODBC administrator to set up data sources for 32-bit
applications using 32-bit drivers.

This gets confusing because on 64-bit windows is the 64-bit
ODBC driver administrator, despite the name. This is a historical artifact of Windows development.
Apparently many apps and installers depend on odbcad32.exe having that name and path,
so Microsoft landed up being stuck with it despite the now-stupid name, which made sense back
in the 16- to 32-bit transition but makes none now. It’s the same reason the
«system32» directory is still called that on 64-bit Windows. PostgreSQL can’t do anything about this.

You’ll see in that article that the 32-bit ODBC administrator on 64-bit Windows is:

%systemdrive%\Windows\SysWoW64\odbcad32.exe

You can launch this from «Start->Run» using the path above. You will see the PostgreSQL ODBC drivers in the
32-bit ODBC administrator.

You ‘can not’ use a 32-bit ODBC driver in a 64-bit application. That means that you’ll still only be
able to use the PostgreSQL ODBC driver with 32-bit applications unless you install a 64-bit ODBC driver
as well.

Пользователи (роли)

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

В зависимости от настройки, роль можно рассматривать как пользователя базы данных или как группу пользователей. Роли могут владеть объектами базы данных (например, таблицами) и выдавать другим ролям разрешения на доступ к этим объектам. Также можно предоставить одной роли членство в другой роли (схоже с добавлением пользователя в группу), чтобы одна роль могла использовать привилегии другой роли.

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

sudo su - postgres

После чего запустите консоль Postgres:

psql

После завершения работы вы сможете выйти из консоли Postgres командой :

postgres=# \q

Так как для каждой созданной роли Postgres предполагает наличие базы данных с таким же именем и по умолчанию подключается именно к ней, имеет смысл создавать новую роль для каждой базы. Кроме того, если имя роли совпадает с именем пользователя, созданного в системе Linux, подключение к БД также упрощается.

Создание новой роли

Создать роль из консоли системы (не psql) можно с помощью команды:

createuser -P --interactive

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

Система поочередно запросит имя новой роли, ее пароль и повтор пароля, а также позволит указать привилегии: сделать ли роль суперпользователем, должны ли быть права на создание баз данных и создание других ролей. Нажимайте y / n и Enter для выбора.

Создать роль из консоли Postgres можно с помощью команды CREATE ROLE.

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

\h CREATE ROLE

Чтобы создать новую роль выполните:

CREATE ROLE имя_роли WITH LOGIN CREATEDB CREATEROLE;

Далее задайте новому пользователю пароль:

\password имя_роли

Просмотр существующих ролей

Чтобы просмотреть созданных пользователей и их привилегии, перейдите в консоль Postgres:

psql

И выполните команду:

\du

Пример вывода:

                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 tmweb     | Create role, Create DB                                     | {}
 tweb      | Create role, Create DB                                     | {}

Нажмите q, чтобы закрыть вывод, и \q, если нужно выйти из консоли Postgres.

dropuser имя_роли

Либо команду в консоли Postgres:

DROP ROLE имя_роли;

Смена пароля пользователя

Для смены пароля одной из ролей подключитесь к Postgres от суперпользователя (postgres или другой роли с такими привилегиями), после чего выполните:

ALTER USER имя_роли WITH PASSWORD 'новый_пароль';

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

Как правило, файл размещается в директории . Проверить его расположение можно в терминале системы с помощью: 

grep postgres /etc/passwd | cut -d ':' -f 6

Откройте файл, указав корректный путь к нему:

sudo nano /var/lib/postgresql/.psql_history

Удалите запись с паролем и сохраните изменения.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий