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

Введение.

Продолжая рассказ о сервере баз данных PostgreSQL, остановимся на вопросах справочной информации.

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

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

-bash-3.2$ psql
CREATE ROLE user LOGIN PASSWORD 'secret';
CREATE ROLE
SET password_encryption='md5';
SET
\q

Вносим изменения в существующие роли и права.

-bash-3.2$ psql
//изменение пароля роли
ALTER ROLE user WITH PASSWORD 'crumplet';
//удаление пароля роли
ALTER ROLE user WITH PASSWORD NULL;
//права на создание других ролей и новых баз данных
ALTER ROLE user CREATEROLE CREATEDB;
\q

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

Введение.

В этом разделе речь пойдёт о специальной учётной записи postgres, которая создаётся при установке сервера PostgreSQL

Пользователь postgres.

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

//атрибуты пользователя postgres после развёртывания pgsql
$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)

Многие сервисные приложения требуют, при конфигурации своих служб, устанавливать пароль к своей БД. Сервер PqSQL, предлагает несколько вариантов аутентификации, остановимся на методе аутентификации md5. Что бы этот метод заработал, необходимо внести изменения в файл /var/lib/pgsql/data/pg_hba.conf. Перед выполнением создадим резервную копию файла pg_hba.conf

//создание резервной копию файла -bash-3.2$ cp -n /var/lib/pgsql/data/pg_hba.conf pg_hba.conf.orig //возврат старой копии -bash-3.2$ cp pg_hba.conf.orig /var/lib/pgsql/data/pg_hba.conf

Запись /var/lib/pgsql/data/pg_hba.conf до редактирования:

-bash-3.2$ psql postgres=# SHOW hba_file; hba_file --------------------------------- /var/lib/pgsql/data/pg_hba.conf (1 строка) 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

 Устанавливаем пароль для суперпользователя postgres. Если пароль не задан, стоит NULL — пройти регистрацию по паролю этот пользователь не сможет

Пароли пользователей БД PqSQL находятся в системном каталоге /var/lib/pgsql/data/pg_authid. Управлять паролями можно используя SQL-запросы CREATE ROLE и ALTER ROLE или командой password входящей в сборник утилиты pqsql.

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

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

-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

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

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

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

-bash-3.2$ psql
postgres=# SELECT line_number, error FROM pg_hba_file_rules WHERE error IS NOT NULL;
line_number | error 
-------------+-------
(0 строк)
\q

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

-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 
 md5
(1 строка)
\q

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

Введение.

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

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

  • Стенд
    • ПК Simply Linux, имя: lin-sl, IP=10.0.2.30
    • Пользователь. имя: trt

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

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

Для ввода команд и управление запросами в среде PostgreSQL существует два основных способа; из оболочки BASH, как показано выше и с помощью клиента psql. Клиент psql имеет более расширенные возможности для работы с PqSQL. Мы установили сервер из коробки, поэтому метод, по умолчанию trust. Это означает, что при подключение к серверу PqSQL, для выполнения запросов SQL, пароль вводить не нужно. Команда для подключения клиента psql выглядит так

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

Журнал PqSQL.

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

Программа psql — это терминальный клиент для работы с PostgreSQL.

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

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

-bash-3.2$ pg_ctl restart

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

//параметр listen_addresses из коробки
-bash-3.2$ psql
postgres=# SHOW listen_addresses;
 listen_addresses
------------------
 localhost
(1 строка)
\q

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

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

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

-bash-3.2$ pg_ctl restart

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

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

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

 Введение.

 В семействе управления базами данных существует PostgreSQL(PqSQL), — рекомендованный для установки и эксплуатации Единым реестром Российских программ для ЭВМ и баз данных. В статье блога приводятся практические рекомендации по общим вопросам установки, запуску и эксплуатации экземпляра кластера сервера PqSQL в среде Linux. При описании некоторых программ, в дальнейшем, будут делаться ссылки на эту статью, как базовую, при подготовки и первоначальной настройки устройств работающих на PqSQL.

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

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

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

# apt-get update
# apt-get install synaptic
# synaptic
  • Для установки PqSQL требуется
    • проверить кодировку
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

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

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

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

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

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

Пользователь postgres осуществляет управление сервером PqSQL обладает ролью суперпользователя. Этого пользователя не стоит в дальнейшем задействовать в других программах. По умолчанию пароль для postgres не установлен.

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

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

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

$ su -l Password:********* # visudo … WHEEL_USERS ALL=(ALL) ALL … :wq

С помощью пользователя 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.

  • Команды формирующие запуск и остановку сервера:
    • управление автозагрузкой PqSQL
# systemctl enable postgresql
# systemctl is-enabled postgresql
enabled
  • Запуск PqSQL включают два варианта:
    • консольной командой
# systemctl start|status|stop|restart|  postgresql
  • утилитой pg_ctl из инструментария PqSQL
$ sudo su - postgres -s /bin/bash
[sudo] password for trt:********
-bash-x.x$ pg_ctl start | stop | restart| reload| status

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

$ sudo su - postgres -s /bin/bash [sudo] password for trt:******** -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: не удалось запустить сервер
  • Продолжение смотри:
  • «Как установить PostgreSQL Linux часть2«
  • «Как установить PostgreSQL Linux часть3«
  • «Как установить PostgreSQL Linux часть4«

 Заключение.

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

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

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

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

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

Введение.

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

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

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

    Сообществом разработчиков MySQL созданы различные ответвления кода, такие например как 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 -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 — сервер где работает MySQL, если вход с консоли сервера с MySQL, host можно не указывать.

    Заключение.

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