Установка и настройка СУБД Postgres Pro Standart 14+ |
В данном разделе приведена инструкция для установки Postgres Pro Standart 14+ для версии OS Ubuntu не ниже 20.04.3 LTS
1. Добавляем репозитории Postgres Pro
curl -o pgpro-repo-add.sh https://repo.postgrespro.ru/pgpro-14/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
2. Устанавливаем СУБД Postgres Pro Standart
apt-get update
apt-get install postgrespro-std-14
apt-get install postgrespro-std-14-dev postgrespro-std-14-devel
3. Подготавливаем сервер к процессу сборки модулей postgres, устанавливаем необходимое po
sudo apt-get install gcc gnupg make git
4. Устанавливаем модуль tds_fdw (https://github.com/tds-fdw/tds_fdw/blob/master/InstallUbuntu.md):
sudo apt-get update
sudo apt-get install libsybdb5 freetds-dev freetds-common
sudo apt-get install git
Скачиваем с гитхаба
git clone https://github.com/tds-fdw/tds_fdw.git
Переходим в директорию, компилируем и устанавливаем приложение
cd tds_fdw
make USE_PGXS=1
sudo make USE_PGXS=1 install
5. Устанавливаем модуль rum (https://github.com/postgrespro/rum)
Скачиваем с гитхаба
git clone https://github.com/postgrespro/rum
Переходим в директорию, компилируем и устанавливаем приложение
cd rum
make USE_PGXS=1
make USE_PGXS=1 install
make USE_PGXS=1 installcheck
psql DB -c "CREATE EXTENSION rum;"
6. Устанавливаем локаль ru_RU.utf8
sudo apt-get install language-pack-ru
sudo update-locale LANG=ru_RU.UTF-8
Если есть дамп БД в cp1251, то, возможно, будет получена ошибка создания БД.
Создаем и применяем эту локаль одной из следующих комманд:
sudo localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
sudo gunzip /usr/share/i18n/charmaps/CP1251.gz
sudo localedef -f /usr/share/i18n/charmaps/CP1251 -i /usr/share/i18n/locales/ru_RU /usr/lib/locale/ru_RU.cp1251
7. Исправляем формат даты-времени
Создаем файл /etc/freetds/locales.conf со следующим наполнением:
[default]
date format = %b %e %Y %I:%M:%S.%z%p
8. Перемещаем каталог данных Postgres
В качестве нового каталога используем /pgdata
date format = %b %e %Y %I:%M:%S.%z%p
9. Для доступа к базам с веб серверов необходимо внести изменения в файлы конфигурации.
Вносим изменения в /pgdata/1f/pg_hba.conf
Для соединения только из указанной подсетиПеремещаем каталог данных PG.
host all all 192.168.4.0/24 md5
Для соединения только из любой подсети
host all all 0.0.0.0/0 md5
Редактируем файл /pgdata/1f/postgresql.conf
Для прослушивания всех подсетей (по умолчанию только localhost), добавляем строку (т.е. или раскомментариваем и правим):
listen_addresses = '*'
10. Создаем пользователя dbo, под которым которым будем подключаться из клиентских sql-средств с удаленных машин
su - postgres
psql -U postgres
postgres=# create user dbo with superuser createdb createrole inherit login password '****';
exit
exit
11. Cоздаем расширения на сервере PostgreSQL
su - postgres
psql -U postgres
postgres=# create user dbo with superuser createdb createrole inherit login password '****';
postgres=# create extension if not exists tds_fdw schema public;
postgres=# create extension if not exists postgres_fdw schema public;
postgres=# create extension if not exists pgcrypto schema public;
postgres=# create extension if not exists pg_buffercache schema public;
postgres=# create extension if not exists btree_gin;
postgres=# create extension if not exists rum;
exit
exit
12. Использование ролей и баз данных в PostgreSQL
По умолчанию Postgres использует концепцию “ролей” для выполнения аутентификации и авторизации. В некоторых аспектах они напоминают обычные учетные записи в Unix, однако Postgres не делает различий между пользователями и группами и предпочитает использовать более гибкий термин “роль”.
После установки Postgres настроена на использование аутентификации ident, что значит, что выполняется привязка ролей Postgres с соответствующей системной учетной записью Unix/Linux. Если роль существует внутри Postgres, пользователь Unix/Linux с тем же именем может выполнить вход в качестве этой роли.
В ходе установки была создана учетную запись пользователя postgres, которая связана с используемой по умолчанию ролью Postgres. Чтобы использовать Postgres, вы можете войти в эту учетную запись.
Существует несколько способов использования этой учетной записи для доступа к Postgres.
Вы можете переключиться на учетную запись postgres на вашем сервере с помощью следующей команды:
sudo -i -u postgres
Теперь вы можете немедленно получить доступ к командной строке Postgres с помощью следующей команды:
psql
В результате вы можете получить доступ к командной строке postgreSQL, а уже отсюда свободно взаимодействовать с системой управления базами данных.
Закройте командную строку PostgreSQL с помощью следующей команды:
\q
В результате вы вернетесь в командную строку postgres в Linux.
13. Создаем новую роль
К настоящему моменту у вас есть только роль postgres, настроенная внутри базы данных. Вы можете создавать новые роли из командной строки с командой createrole. Флаг --interactive будет запрашивать имя новой роли, а также попросит указать, будут ли у этой роли права superuser.
Если вы выполнили вход в учетную запись postgres, то можете создать нового пользователя с помощью следующей команды:
postgres@server:~$ createuser --interactive
Если же вы предпочитаете использовать sudo для каждой команды без переключения с обычной учетной записи, введите следующую команду:
sudo -u postgres createuser --interactive
Скрипт будет предлагать варианты на выбор и, исходя из ваших ответов, выполнять нужные команды Postgres для создания пользователя в соответствии с вашими спецификациями.
Output
Enter name of role to add: d10taskuser
Shall the new role be a superuser? (y/n) y
14. Создаем пользователя
Сперва необходимо войти под служебным пользователем postgres:
sudo -su postgres psql
Далее вы можете создать новую роль с помощью команды create user, после чего указать пароль:
CREATE USER d10taskuser WITH PASSWORD 'YOUR_PASSWORD'
15. Создаем новую базу данных
Для создания базы данных введите следующее:
CREATE DATABASE d10task_hd ENCODING UTF8
После чего вам необходимо предоставить доступ пользователю к созданной базе:
grant all privileges on database d10task_hd to d10taskuser
Для проверки введите следующее:
\l
Корректный результат проверки:
List of databases
16. Импортируем дамп базы данных
Скопируйте файл с расширением dump, содержащий структуру и контент базы данных, в определенную папку, например: /src/d10task_hd.dump. Данный файл вам может предоставить техническая поддержка.
Восстановите базу данных из файла с помощью следующих команд:
sudo -su postgres
psql -d d10task_hd < /src/d10task_hd.dump