Как установить PostgreSQL Linux часть 5.

Введение.

Продолжаем тему обеспечения безопасности пользователей БД PgSQL, начало см. PostgreSQL Linux часть 5.

В статье PostgreSQL Linux часть 5, будем рассматривать практические примеры и действия с командами управления пользовательскими ролями.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL Linux часть 5.

  • Стенд
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
      • PostgreSQL X.X
        • метод аутентификации md5
    • Simply Linux, имя: sl, IP=10.0.2.30
    • Пользователь, имя: trt

Команда createuser.

После того, как был добавлен новый пользователь trt с правами администратора, становится доступна консольная команда creatuser.

Роль trt позволяет создать нового пользователя xre с консоли сервера.

Создание пользователя базы PgSQL.
Создание пользователя базы PgSQL с консоли сервера.

Пользователь trt имеет учётную запись на сервере, где установлен PgSQL

Теперь, эти же действия произведём с удалённой рабочей станции.

Создание пользователя PgSQL с удалённой рабочей станции.
Создание пользователя PgSQL с удалённой рабочей станции.
  • Ключи команды createuser
    • -p порт сервера (если стандартный, 5432, можно не указывать)
    • -h имя\IP сервера PgSQL
    • -i подтверждение об удалении роли
    • -e вывести журнал действий

В строке CREATE ROLE указаны какие роли доступны/Не доступны при создании.

Проверяем наши действия с помощью клиента psql.

Проверка создания пользователя PgSQL.
Смотреть права пользователя trt с помощью psql.

Команда dropuser.

Команда dropuser удаляет пользователя, только суперпользователь или пользователь с привилегией CREATEROLE могут выполнять данные действия.

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

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

Удаление пользователя с помощью утилиты psql.

Находясь на консоли сервера команда dropuser может выполнятся без ключа «h».

CREATE ROLE.

Встроенная в оболочку psql команда CREATE ROLE имеет в своём арсенале более широкие возможности чем createuser.

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

Подключимся к серверу с помощью терминального клиента psql.

[trt@sl ~]$ psql -h 10.0.2.11 -U trt
Пароль пользователя trt: **********

Создадим роль, для которой разрешён вход.

trt=# CREATE ROLE xre LOGIN;

Сформируем роль с паролем.

trt=# CREATE USER xre WITH PASSWORD 'jwdold$%^;

Инициируем роль, которая может создавать БД и управлять др.ролями.

trt=# CREATE ROLE admbd WITH CREATEDB CREATEROLE;

DROP ROLE.

Команда DROP ROLE удаляет роль в базе данных, освобождая объекты от ролевой зависимости.

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

Удалим существующею роль xre с используя psql.

[trt@sl ~]$ psql -h 10.0.2.11 -U trt
Пароль пользователя trt:********
trt=# DROP ROLE xre;
DROP ROLE

Можете проверить свои действия самостоятельно, с помощью клиента psql с ключом \du.

ALTER ROLE.

Команда ALTER ROLE изменяет атрибуты и название роли в PgSQL.

Для примера создадим пользователя xre и проведём с его записью несколько манипуляций.

[trt@sl ~]$ createuser -h 10.0.2.11 -i -e xre
Пароль: ********** 
SELECT pg_catalog.set_config('search_path', '', false);
CREATE ROLE xre NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

Сделаем удалённый вход на сервер.

[trt@sl ~]$ psql -h 10.0.2.11 -U trt
Пароль пользователя trt:********* 

Меняем пароль роли.

trt=# ALTER ROLE trt WITH PASSWORD 'hu6h44e';
ALTER ROLE

Удаляем пароль у роли.

trt=# ALTER ROLE xre WITH PASSWORD NULL;
ALTER ROLE

Добавляем права роли xre для управление другими ролями и созданием новых баз и проверяем свои действия.

trt=# ALTER ROLE xre CREATEROLE CREATEDB;
ALTER ROLE
trt=# \du
                Список ролей
Имя роли |      Атрибуты             | Член ролей                                         
---------+------------------------------------------------
xre      | Создаёт роли, Создаёт БД  | {}                                              

В заключение, самостоятельно, удалим роль xre, используя команду DROP ROLE.

Добавление роли в группу.

Нам остаётся рассмотреть вопрос, участия одной роли членом другой. По аналогии с OC Windows, Linux, где есть группы, в PgSQL так же можно работать с групповыми политиками называемыми ролями для групп.

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

Для выполнения этих задач существуют команды GRANT и REVOKE

Команда GRANT.

Команда GRANT добавляет одни роли членами других и назначает права, для доступа к объектам баз данных.

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

psql -h 192.168.100.11 -U trt
Пароль пользователя trt:*********
trt=# CREATE ROLE xre;
CREATE ROLE
trt=# \du
                     Список ролей
Имя роли |             Атрибуты                        | Член ролей 
---------+---------------------------------------------+------------
trt      | Суперпользователь, Создаёт роли, Создаёт БД |  {}
xre      | Вход запрещён                               |  {}

Добавим роль LOGIN для xre и сделаем его членом группы trt роли.

...
trt=# ALTER ROLE xre LOGIN;
ALTER ROLE
trt=# \du
                     Список ролей
Имя роли |             Атрибуты                        | Член ролей 
---------+---------------------------------------------+------------
trt      | Суперпользователь, Создаёт роли, Создаёт БД |  {}
xre      |                                             |  {}

trt=# GRANT trt TO xre;
GRANT ROLE
trt=# \du
                     Список ролей
Имя роли |             Атрибуты                        | Член ролей 
---------+---------------------------------------------+------------
trt      | Суперпользователь, Создаёт роли, Создаёт БД |  {}
xre      |                                             | {trt}

Обратите внимание на столбец «Член ролей» пользователя xre.

Команда REVOKE.

Команда REVOKE удаляет из роли права, назначенных ранее.

...
trt=# REVOKE trt FROM xre;
trt=# \du
                     Список ролей
Имя роли |             Атрибуты                        | Член ролей 
---------+---------------------------------------------+------------
trt      | Суперпользователь, Создаёт роли, Создаёт БД | {}
xre      |                                             | {}

Столбец «Член ролей» пользователя xre изменился.

Заключение.

Эта статья заканчивает курс коротких лекций для начинающих, которые хотят получить общие сведения и начальную практику по установке и управлению PostgreSQL. Позже, вероятно, добавится ещё одна статья, PostgreSQL Linux часть 6, в которой будет рассказано, как создавать базы, таблицы и SQL запросы.

Полезные ссылки.

Как установить PostgreSQL Linux часть 4.

Введение.

Изучая основы работы сервера PostgreSQL, переходим к рассмотрению вопросов обеспечения безопасности пользователей использующих БД PgSQL. В статье PostgreSQL Linux часть 4, мы будем рассматривать такие важные понятия как пользователи и роли.

Основу защиты учётных записей пользователей PgSQL формируют пользовательские роли и пароли.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL Linux часть 4.

  • Стенд
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
      • PostgreSQL X.X
        • метод аутентификации md5
    • Simply Linux, имя: lin-sl, IP=10.0.2.30
    • Пользователь, имя: trt

Роль — это пользователь СУБД или, если пользоваться терминологией ОС Linux, Windows — группа. Роли не связаны с именами пользователей ОС. Роли являются общими объектами для PgSQL, могут подключаться к разным базам и быть владельцами объектов для различных БД.

Команды управления ролями PostgreSQL Linux часть 4.

  • Список основных команд для управления ролями:
    • CREATE ROLE — вызывается из psql
    • DROP ROLE — вызывается из psql
    • ALTER ROLE — вызывается из psql
    • createuser — вызываются из командной строки ОС
    • dopuser — вызываются из командной строки ОС

CREATE ROLE.

  • CREATE ROLE — создать роль в базе данных
    • CREATE ROLE имя [ [WITH] параметр [ …] ]
      • параметр
        • LOGIN вход на сервер
        • NOLOGIN
        • SUPERUSER суперпользователь
        • NOSUPERUSER
        • CREATEDB создавать базы данных
        • NOCREATEDB
        • CREATEROLE создавать, изменять, удалять роли
        • NOCREATEROLE
        • REPLICATION выполнять репликации
        • NOREPLICATION
        • и другие…

Параметры (атрибуты) имеют два варианта, пример, CREATEDB (дает право на создание БД) и NOCREATEDB (не дает такого права), по умолчанию выбирается ограничивающий вариант.

DROP ROLE.

  • DROP ROLE — удалить роль в базе данных
    • DROP ROLE [ IF EXISTS ] имя [, …]
      • IF EXISTS — не считать ошибкой, если роль не существует

ALTER ROLE.

  • ALTER ROLE — изменяет атрибуты роли
  • ALTER ROLE имя [ [WITH] параметр [ …] ]
    • параметр
      • SUPERUSER суперпользователь
      • NOSUPERUSER
      • CREATEDB создавать базы данных
      • NOCREATEDB
      • CREATEROLE создавать, изменять и удалять другие роли
      • NOCREATEROLE
      • INHERIT наследовать права ролей
      • NOINHERIT
      • LOGIN вход на сервер
      • NOLOGIN
      • REPLICATION режим репликации
      • NOREPLICATION
      • BYPASSRLS — игнорировать все политики защиты на уровне строк
      • NOBYPASSRLS
      • CONNECTION LIMIT сколько параллельных подключений установить
      • [ ENCRYPTED ] PASSWORD ‘парользадаёт пароль роли
      • PASSWORD NULL пароль не задан
      • VALID UNTIL ‘дата_времяустанавливает дату и время, после которого пароль роли перестаёт действовать

createuser.

  • createuser — создать новую учётную запись PostgreSQL
    • createuser [параметр…] [имя_пользователя]
      • параметр
        • -c номер количество соединений
        • -d может создавать базы данных
        • -D не может создавать базы данных
        • -g role роль, к которой будет добавлена текущая роль
        • -i наследовать права ролей
        • -I не наследовать права ролей
        • -l может подключаться к серверу
        • -L не может подключаться к серверу
        • -r может создавать, изменять и удалять роли
        • -R не может создавать, изменять и удалять роли
        • -s имеет права суперпользователя
        • -S не имеет права суперпользователя
        • —interactive диалоговый режим для параметров
        • и другие…

createuser — та же функциональность, что и команда CREATE ROLE

dropuser.

  • dropuser — удалить учётную запись пользователя PostgreSQL
    • dropuser [параметр…] [имя_пользователя]
      • параметр
        • -i диалоговый режим
        • -e журнал выполнения команд

dopuser — та же функциональность, что и команда DROP ROLE

Управление ролями PostgreSQL Linux часть 4.

Перейдём к практическим действиям использования ролей. Для начала посмотрим; какие роли, пользователи и БД существуют после установки и первичной настройки PgSQL.

Для сокращения фрагментации кода, строки

$ sudo su - postgres -s /bin/bash
-bash-4.4$ psql
будут в дальнейшем опущены, мы внутри клиента psql
$ postgres=# \l Список баз данных Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа -----------+----------+-----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | template0 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres postgres=# \du Имя роли | Атрибуты, Список ролей | Член ролей ----------+-------------------------------------------------------------------------+------------ postgres | Суперпользователь, Создаёт роли, Создаёт БД, Репликация, Пропускать RLS | {}

Создадим новую базу данных.

postgres=# CREATE DATABASE trest;

Введём в нашу БД новую роль (пользователя)

postgres=# CREATE ROLE trt LOGIN CREATEROLE;

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

postgres=# \password trt
Введите новый пароль для пользователя "trt":********** 
Повторите его:**********

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

$ psql -U trt
Пароль пользователя trt: 
...
trt=> 

Используя ключ du смотрим обновлённый список ролей.

$ postgres=# \du

Пользователь trt не обладает привилегированной ролью, мы вынужденны, для управления PostgreSQL, постоянно обращаться к записи postgres. Это неправильно, тем более, что консольные команды из OC, createuser и dropuser для postgres не доступны — у postgres нет регистрации в OC и это хорошо. Узко — целевое значение пользователя postgres, один из элементов безопасности БД. Запись Postgres владеет только теми данными, которыми управляет сервер БД.

Рекомендуется не назначать пользователя postgres владельцем исполняемых файлов PgSQL, чтобы их нельзя было подменить в случае компрометации серверного процесса.

Добавление административной роли.

Сейчас пользователь trt может только создавать роли, мы добавим ему некоторые привилегированные права, что бы разгрузить запись postgres и сделать управление PqSQL более гибким.

postgres=# ALTER ROLE trt SUPERUSER CREATEDB CREATEROLE; ALTER ROLE postgres=# \du Список ролей Имя роли | Атрибуты | Член ролей ----------+-------------------------------------------------------------------------+------------ postgres | Суперпользователь, Создаёт роли, Создаёт БД, Репликация, Пропускать RLS | {} trt | Суперпользователь, Создаёт роли, Создаёт БД | {}

Теперь trt имеет привилегии администратора и может выполнять управление другими пользовательскими ролями и записями.

Заключение.

Тема управления ролями PostgreSQL широка и требует более глубокого рассмотрения.

Продолжение смотри в пятой части.

Полезные ссылки.

Как установить PostgreSQL Linux часть3.

Введение.

Продолжая изучение PgSQL переходим к рассмотрению специальной учётной записи postgres. Ранние мы кратко упоминали о пользователе postgres, см.часть2, теперь, в PostgreSQL Linux часть3, рассмотрим этот вопросе более подробно.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL Linux часть 3.

  • Стенд
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
      • PostgreSQL X.X
        • метод аутентификации md5
    • Simply Linux, имя: lin-sl, IP=10.0.2.30
    • Пользователь. имя: trt

Пользователь PostgreSQL Linux часть3.

При установке БД, создаётся пользователь, который регистрируется в операционной системе с именем — postgres. Учётная запись postgres обладает ролью суперпользователя, для кластера PqSQL и методом аутентификации, из «коробки», trust.

Пример атрибутов пользователя postgres для PostgreSQL Linux часть3.

$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)

Многие программы требуют при конфигурации своих служб , устанавливать пароль для работы с БД.

  • PostgreSQL предлагает несколько вариантов аутентификации:
    • trust
    • password
      • scram-sha-256
      • md5
      • password
    • GSSAPI
    • SSPI
    • ident
    • peer
    • LDAP
    • RADIUS
    • по сертификату SSL
    • RAM
    • BSD

Из списка приведённого выше, остановимся на методе аутентификации md5, как более распространённым. Для включения md5, необходимо внести изменения в файл /var/lib/pgsql/data/pg_hba.conf.

Перед выполнением создадим резервную копию файла pg_hba.conf.

$ sudo su - postgres -s /bin/bash -bash-3.2 cp -n /var/lib/pgsql/data/pg_hba.conf pg_hba.conf.orig

Возврат старой копии файла pg_hba.conf, если требуется.

$ sudo su - postgres -s /bin/bash -bash-3.2$ cp pg_hba.conf.orig /var/lib/pgsql/data/pg_hba.conf

Смотрим содержание файла pg_hba.conf.

$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SHOW hba_file;
hba_file
---------------------------------
/var/lib/pgsql/data/pg_hba.conf 
(1 строка) 

Из листинга показанного выше видно, что файл pg_hba.conf содержит одну строку.

Создадим запрос для демонстрации содержимого файла pg_hba.conf до редактирования.

$ sudo su - postgres -s /bin/bash -bash-3.2$ psql postgres=# SELECT line_number, type, database, user_name, address,auth_method FROM pg_hba_file_rules; line_number | type | database | user_name| address | auth_method -------------+-------+---------------+-----------+-----------+------------- 84 | local | {all} | {all} | | trust 86 | host | {all} | {all} | 127.0.0.1 | trust 88 | host | {all} | {all} | ::1 | trust 91 | local | {replication} | {all} | | trust 92 | host | {replication} | {all} | 127.0.0.1 | trust 93 | host | {replication} | {all} | ::1 | trust (6 строк) \q

Как видно из листинга в качестве метода аутентификации, для PostgreSQL Linux часть3, стоит trust.

Установка пароля для PostgreSQL Linux часть3.

Управление паролями и ролями в PqSQL осуществляется с помощью нескольких SQL команд. Выбор зависит от задач которые необходимы для работы.

  • Список команд для управления ролями и паролями PqSQL:
    • CREATE ROLE
    • ALTER ROLE
    • password — входит в сборник утилиты pqsql.

Для нашей задачи выбираем команду password.

Дополнительные сведения про роли и пароли читайте в следующих частях.

$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql 
postgres=# \password postgres
Введите новый пароль: 
Повторите его: 
postgres=# \q

Вносим изменения в столбец database, БД replication нас сейчас не интересует, все базы находятся на одном сервере, реплик нет

$ sudo su - postgres -s /bin/bash -bash-3.2$ echo 'local all all md5' > /var/lib/pgsql/data/pg_hba.conf -bash-3.2$ echo 'host all all all md5' >> /var/lib/pgsql/data/pg_hba.conf

Перегружаем сервер для перечитывания новых значений.

$ sudo su - postgres -s /bin/bash
bash-3.2$ psql
postgres=# SELECT pg_reload_conf();
pg_reload_conf 
----------------
 t
(1 строка)
\q

Проверяем наши действия на ошибки.

$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SELECT line_number, error FROM pg_hba_file_rules;  line_number | error 
-------------+-------
           1 | 
           2 | 
(2 строки)

Смотрим какой метод аутентификации представлен теперь.

$ sudo su - postgres -s /bin/bash -bash-3.2$ psql postgres=# SELECT line_number, type, database, user_name, address,auth_method FROM pg_hba_file_rules; line_number | type | database | user_name | address | auth_method -------------+-------+----------+-----------+---------+------------- 1 | local | {all} | {all} | | md5 2 | host | {all} | {all} | all | md5 (2 строки) \q

Проверяем с помощью параметра password_encryption, алгоритм хранения пароля.

-bash-3.2$ psql
postgres=# SHOW password_encryption;
password_encryption 
---------------------
 scram-sha-256
(1 строка)
\q

Таким образом мы установили метод аутентификации md5 с алгоритмом шифрования, scram-sha-256.

Заключение.

В приведённом выше примеры было показано, как установить пароль и метод аутентификации с шифрованием для привилегированного пользователя postgres. Для этого мы использовали самый распространённый метод аутентификации md5.

В дальнейшем, при широком использовании БД PostgreSQL, возникнет потребность доступа к базам данных других пользователей, использующих табличное пространство PqSQL в своей работе. Как создавать новых пользователей и управлять пользовательскими учётными записями, читайте в следующей части цикла статей о PostgreSQL.

Продолжение смотри в четвёртой части.

Полезные ссылки.

Как установить PostgreSQL Linux часть 2.

Введение.

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

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL.

  • Стенд
  • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
    • PostgreSQL X.X
  • ПК Simply Linux, имя: lin-sl, IP=10.0.2.30
  • Пользователь. имя: trt

Ввод команд PqSQL.

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

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

Консоль пользователя.

Находясь в сеансе консоли, подключившись по ssh к серверу, пользователь должен иметь право для работу с БД. Под правами подразумевается присвоение роли, терминология PgSQL, для выполнение команд в БД.

Из консоли можно выполнить ограниченное число команд.

Оболочка BASH.

Из среды BASH управление осуществляет пользователь с именем postgres. Пользователь создаётся в процессе установки PgSQL, ему присваивается роль администратора всего кластера.

Это, пока, единственный пользователь, имеющий привилегированные права для управления PgSQL.

создаётся автоматически при установке PostgreSQL

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

Команда для входа в BASH.

$ sudo su - postgres -s /bin/bash
  • sudo — выполнить команду от имени другого пользователя
  • su — добавить права суперпользователя
  • s — путь к оболочке
  • /bin/bash — имя оболочки

Среда BASH позволяет выполнять основные команды управления сервером БД.

Терминальный клиент psql.

Интерактивный клиент psql имеет более расширенные и гибкие возможности для работы с PqSQL, включая сложные SQL запросы.

Установленный сервер из коробки имеет метод авторизации trust. Это означает, что при подключению к PqSQL, работая локально из консоли сервера, пароль вводить не требуется.

Все доступные методы авторизации читайте в других частях.

Команда для входа с помощью psql выглядит так.

$ psql -Uuser -p[port]
  • Ключи.
  • -d имя базы данных
  • -h имя сервера
  • -p номер порта сервера, можно не указывать если стандартный
  • -U имя пользователя

Таким образом, основными средами управления PgSQL являются BASH и Psql.

Настройка psql клиента.

Локальное подключение к серверу по ssh для выполнения команд, о чём говорилось выше должно быть ограниченным и использоваться только для управления сервером администратором. Все остальные пользователя, имеющие учётные записи на PgSQL должны подключатся удалённо для выполнения SQL запросов с помощью клиента psql.

Осуществить удалённое подключение к PgSQL с помощью клиента psql можно, изменив параметр listen_addresses в настройках файла postgresql.conf сервера.

Указанный параметр использует протокол TCP/IP. По умолчанию в listen_addresses указанно значение localhost — только для локальных подключений к серверу через unix-domain socket. Это значение можно оставить без изменений при условии, что сервер PgSQL и приложения установленные на нём, например Zabbix, работают на одном сервере.

При этом подключение создавать дополнительных пользователей не требуется — управление осуществляет администратор подключённый по ssh к серверу

используя права пользователя postgres или создав новую роль с правами администратора

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

Смотрим значение listen_addresses из коробки.

-bash-3.2$ psql
postgres=# SHOW listen_addresses;
 listen_addresses
------------------
 localhost
(1 строка)
\q

Меняем параметр listen_addresses с localhot на  *.  Переменная * позволяет разрешить подключение к серверу PgSQL из всех сетевых диапазонов организации по протоколу TCP/IP.

Корректировка listen_addresses .

-bash-3.2$ psql postgres=# \! sed "s/.*listen_addresses =.*/listen_addresses = '*'/" -i /var/lib/pgsql/data/postgresql.conf

Перегружаем сервер для перечитывания новых значений.

-bash-3.2$ pg_ctl restart

Контролируем фиксацию значение.

-bash-3.2$ psql 
postgres=# SHOW listen_addresses;
 listen_addresses 
------------------
 *
(1 row)
\q

При желание параметр  *  можно сузить до нужного диапазона сети.

После изменения настроек, клиент psql готов к приёму команд для удалённого управления базами сервера PqSQL с рабочих станций.

$ psql -h lin-pq -U trt
Password for user trt: 
...
trt=# 
  • -h имя сервера для удалённого подключения
  • lin-pq стендовое название сервера PqSQL
  • trt стендовый пользователь

В следующих частях конспекта «Как установить PostgreSQL Linux» будут показаны практическое использование клиента psql.

Пользователи работающие на ПК Windows также могут использовать клиент psql для управления базами PqSQL.

как это сделать читайте здесь

Журнал PqSQL.

Сервер PqSQL позволяет вести журнал производительности и ошибок своей работы. При установке сервера, режим журналирования отключен. Пользователь, при желании, может включить контроль записи работы сервера с помощью журнала, отредактировав файл postgresql.conf. После наших действий в дереве каталога /var/lib/pgsq/data создаётся папка log, для хранения файлов журналов

Папка журналов PgSQL.
Папка журналов PgSQL.

Команда включающая режим журнала.

# \sed "s/.*logging_collector =.*/logging_collector = 'on'/" -i /var/lib/pgsql/data/postgresql.conf

Перегружаем сервер для перечитывания новых значений.

-bash-3.2$ pg_ctl restart

Контролируем фиксацию значения.

-bash-3.2$ psql
postgres=# SHOW listen_addresses;
 listen_addresses 
------------------
 *
(1 строка)

Заключение.

В этой части конспекта рассмотрены базовые основы конфигурации и первичного управления сервером PgSQL. Понимание основ позволяет уверенно чувствовать себя при погружение в тему управления сервером баз данных PostgeSQL в дальнейшем.

Продолжение смотри в третьей части.

Полезные сылки.

Как установить PostgreSQL Linux часть 1.

 Введение.

 В семейство управления базами данных входит PostgreSQL — рекомендованный для установки и эксплуатации Единым реестром Российских программ для ЭВМ и баз данных.

Этой публикацией, PostgreSQL часть 1, открывается цикл статей посвящённых теоретическим основам и практическим рекомендациям по вопросам установки, запуску и эксплуатации экземпляра сервера PostgreSQL в среде Linux.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL.

  • Стенд: 
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
    • Simply Linux, имя: lin-sl, IP=10.0.2.30
    • Пользователь, имя: trt

Определение.

  • В различных источниках можно встретить:
    • PostgreSQL
    • PL/pgSQL — процедурное расширение языка SQL
    • PgSQL

Архитектура и терминология.

  • PostgreSQL выполняет архитектуру клиент-сервер, включающий:
    • главный серверный процесс-имя postgres
    • клиентские запросы — графика, текст, вэб страница …

Главный процесс , postgres, порождает множество подпроцессов, для каждого подключаемого клиента, обеспечивая этим многопоточность.

Сервер PostgreSQL, согласно терминологии, является — экземпляром сервера.

Данные сервера хранятся в базах, один экземпляр PostgreSQL может работать с несколькими базами определяемые, как кластер БД.

Развёртывание PostgreSQL.

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

# apt-get update
# apt-get install synaptic
# synaptic
  • Для установки PqSQL необходимо:
    • проверить службу времени NTP.
    • проверить кодировку
locale -a|grep ru_RU
ru_RU
ru_RU.cp1251
ru_RU.ibm866
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
  • выбрать необходимую версию сервера PqSQL
# apt-cache show postgresql Виртуальный пакет postgresql предоставляется следующими пакетами: .... You should explicitly select one to show. E: Package postgresql is a virtual package with multiple providers.
  • установить выбранный пакет сервера
# apt-get install postgresqlXX-server

XX — версия выбранного сервера PqSQL

  • После установки создаются каталоги:
    • /var/lib/pgsql — папки кластера БД
    • /usr/share/pgsql — пакеты PostgreSQL

Формирование кластера PostgreSQL часть1.

Кластер — область хранения баз данных на диске

При установке сервера PqSQL создаётся пользователь postgres.

$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)

Пользователь postgres осуществляет начальное управление сервером, обладая ролью суперпользователя. По умолчанию пароль для postgres не установлен — метод аутентификации из «коробки» trust.

Используя роль postgres, создадим кластер сервера. Для выполнения необходимо, что бы учётная запись осуществляющая действия с пользователем postgres была членом группы whell.

Проверим / установим утилиту sudo.

# apt-get install sudo

Открываем доступ группе wheel, для выполнения команд sudo.

# visudo … WHEEL_USERS ALL=(ALL) ALL … :wq

Проверяем каким группам принадлежит пользователь trt.

$ id -Gn trt
trt wheel uucp proc cdrom floppy cdwriter audio radio users vboxusers scanner xgrp camera

Используя роль postgres создадим кластер сервера PqSQL.

$ sudo su - postgres -s /bin/bash [sudo] password for trt:******** -bash-x.x$ initdb -k Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres". От его имени также будет запускаться процесс сервера. Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8". Кодировка БД по умолчанию, выбранная в соответствии с настройками: "UTF8". Выбрана конфигурация текстового поиска по умолчанию "russian". Контроль целостности страниц данных включён. исправление прав для существующего каталога /var/lib/pgsql/data... ок создание подкаталогов... ок выбирается значение max_connections... 100 выбирается значение shared_buffers... 128MB выбор реализации динамической разделяемой памяти... posix создание конфигурационных файлов... ок выполняется подготовительный скрипт... ок выполняется заключительная инициализация... ок сохранение данных на диске... ок ПРЕДУПРЕЖДЕНИЕ: используется проверка подлинности "trust" для локальных подключений. Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключи -A, --auth-local или --auth-host при следующем выполнении initdb. Success. You can now start the database server using: service postgresql start or pg_ctl -D /var/lib/pgsql/data -l файл_журнала start -bash-x.x$ exit
  • sudo su — выполнить команду от имени пользователя входящего в группу администраторов
  • s — запуск команд в оболочке BASH

-bash-x.x— текущая версия bash

Команды для запуска PqSQL часть1.

  • Запуск PqSQL включают два варианта:
    • консольной командой
# systemctl start|status|stop|restart|  postgresql
  • утилитой pg_ctl из инструментария PqSQL
$ sudo su - postgres -s /bin/bash
-bash-x.x$ pg_ctl start | stop | restart| reload| status

Вид1. Листинг запуска сервера командой pg_ctl start

$ sudo su - postgres -s /bin/bash -bash-x.x$ pg_ctl start ожидание запуска сервера.... [1337] СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "127.0.0.1" открыт порт 5432 ... [1337] СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::" открыт порт 5432 ... [1337] СООБЩЕНИЕ: для приёма подключений открыт Unix-сокет "/tmp/.s.PGSQL.5432" ... [1337] СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов ... [1337] ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "log". готово сервер запущен

При запуске postgresql, может возникнуть сообщение, Вид2, это нормально.

стартовый PID автозагрузки запустил кластер

все команды pg_ctl, кроме start доступны

Вид2. Листинг сообщения о ошибке при старте PqSQL.

-bash-3.2$ pg_ctl start pg_ctl: возможно, уже работает другой сервер; всё же пробуем запустить этот сервер ожидание запуска сервера....ВАЖНО: файл блокировки "postmaster.pid" уже существует ПОДСКАЗКА: Другой экземпляр postmaster (PID 1118) работает с каталогом данных "/var/lib/pgsql/data"? прекращение ожидания pg_ctl: не удалось запустить сервер

Управление автозагрузкой PqSQL.

# systemctl enable postgresql
# systemctl is-enabled postgresql
enabled

Узнать версию сервера Postgresql можно командой.

$ postgres -V
postgres (PostgreSQL) XX.X

Проверка работы сервера.

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

$ psql -U postgres -c 'select now()'
Пароль пользователя postgres: 
              now              
-------------------------------
 2023-03-21 13:05:28.538569+03
(1 строка)

Пользователь postgres имеет, из коробки, аутентификацию trust — без пароля

Подробно о ролях PgSQL, читай в третьей части.

 Заключение.

 Сервер PqSQL зарекомендовал себя, как надёжный, устойчивый при длительной эксплуатации СУБД. Встроенные возможности PqSQL, позволяют конкурировать с Microsoft SQL и Oracle. Конечно, те кто вложился деньгами и знаниями в изучение и эксплуатацию MS SQL и Oracle, желания переходить или мигрировать на PqSQL не испытывают. Слишком высоки риски, да и годами устоявшиеся система управления вполне устраивает. Но жизнь и время требует новых подходов и решений. Создать с нуля БД и запустить в эксплуатацию это одно, а подготовить и выполнить план по миграции другое. Здесь требуется проведение предварительных действий. Начинать надо с обучения и развёртывания стенда, что бы на практике получать навыки и опыт работы с PostgreSQL.

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

В качестве «живого» примера установки и работы PqSQL,читайте статью.

Продолжение смотри во второй части…

Полезные ссылки.

Как установить MySQL Linux

Введение.

 Тема блога, установка, настройка и подключение сервера баз данных MySQL к операционной системе Linux.

MySQL — свободная реляционная система управления базами данных. Поддержку осуществляет корпорация Oracle, Продукт распространяется под двойной лицензией, GNU и коммерческой лицензией.

  • Гибкость СУБД обеспечивается таблицами:
    • MyISAM — поддерживает полнотекстовый поиск
    • InnoDB — поддерживает транзакции на уровне отдельных записей

Сообществом разработчиков созданы различные ответвления кода, такие например как MariaDB.

Подготовка к развёртыванию сервера.

Установить необходимые пакеты.

# apt-get update
# apt-get install MySQL-server

Запуск и автозагрузка сервера.

# systemctl start mysqld
# systemctl enable mysqld
# systemctl is-enabled mysqld
enabled

Устанавливаем пароль администратора сервера, по умолчанию пароль нажатие enter.

# mysql -uroot -p
# Enter password: enter
//меняем пароль
# mysqladmin -u root password
# New password:secret
# Confirm new password:secret

Обновляем или перестраиваем индексы если это требуется по условию установки или при повышение версии.

# mysql_upgrade -u root -p secret //ver.8.0.16 и выше отсутствует

Проверяем поддержку механизма хранения сервера для innodb.

# mysql -u root -p secret ... mysql> SHOW ENGINES\G ... *************************** 1.row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keys Transactions: YES XA: YES Savepoints: YES

Установка MySQL 8.

 Версия MySQL8.X требует предварительных настроек уровня безопасности, иначе может появится предупреждение «ошибка подключения к базе данных», при установке некоторых программ. Подробно о политике паролей для MySQL8.X см. здесь. После установки и настройке сервера MySQL8.X, необходимо, переключить режим безопасности сервера MySQL8.X на mysql_native_password plugin выполнив для этого:

mysql -uroot -p Enter password: ENTER //нажать клавишу ENTER //установить пароль mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; //установить native_password mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Каталоги MySQL.

Основные папки обеспечивающие работу сервера расположены в дереве каталогов устройства на установлена БД.

  • /etc/my.cnf.d — файлы конфигурации
  • /var/lib/mysql — кластер таблиц и баз

Обслуживание сервера.

 Приводятся команды которые встречаются наиболее часто при обслуживание сервера.

Подключение к серверу и работа с базой.

//подключение к северу # mysql -h host -u user -p secret //выход mysql> quit //создание базы mysql> CREATE DATABASE trest; //сделать trest текущей базой mysql> USE trest; Database changed //подключение к северу и базе trest # mysql -h host -u user -p trest //узнать, какие базы существуют mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | | trest | | tmp | +----------+

Параметр host — сервер где работает SQL, если вход с консоли параметр host можно не указывать.

Заключение.

 Широкое применение сервера баз данных MySQL обуславленно его стабильной работой, мощной документацией и поддержкой сообщества. Используя в качестве приложения этот вид БД, необходимо соблюдать некоторые правила, выполнение которых избавит администратора от ошибок потери важной информации. Главное правило — резервное копирование, отведите на изучение и тестирования этого важного механизма необходимое время. Проверяйте, периодически, создаваемые резервные копии, храните их на разных устройствах. Организуйте автоматизацию процесса создания и удаления старых копий. Выучите основные команды управления и обслуживании сервера. Продумайте систему безопасности прав доступа к БД.

Copyright © 2011-2024
Все права защищены.
При перепечатке указать источник: kabtim.ru
Контакты