Продолжая рассказ о работе базы данных SQLite, начало смотри здесь, рассмотрим программу, которая позволяет облегчить управление базой. Не всем пользователям нравится выполнять обслуживание б.д вводя команды из консоли. Утилита SQLiteStudio имея встроенный графический интерфейс, призвана облегчить обслуживание SQLite.
Подготовка.
Стенд:
Сервер ALT Linux, имя lin-sqllite; ip-10.0.2.11;
Simply Linux, имя: lin-sl, IP=10.0.2.30
Сервер и рабочая станция должны иметь обновления на день установки программы.
Установка SQLiteStudio.
Выбор программы возможен, как из репозиотория, так и сайта производителя. Мы покажем оба варианта установки программы. После обновления системы из консоли сервера или с помощью графического менеджера Synaptic1, выполняем установку.
# apt-get install sqlitestudio
Процесс инсталляции займёт несколько секунд, после чего можно приступить к запуску студии для работы с базой.
Если необходимо произвести установку пакета студии с сайта производителя, скачайте архив, разверните и выполните…
$ tar xvf sqlitestudio-X.X.X.tar.xz
Не забудьте проверить контрольную сумму2 скаченного архива.
$ md5sum sqlitestudio-X.X.X.tar.xz
Запуск и работа.
Если программа установлена из репозитория, откройте консоль и введите команду…
$ sqlitestudio
При скачивании пакета с сайта, после проверки и распаковки, переходим в папку распакованного архива и запускаем командой…
[user@sl SQLiteStudio]$ ./sqlitestudio
При первом старте программа предложит выбрать язык общения.
После чего необходимо нажав кнопку «Базы данных» подключить SQLiteStudio к исследуемой базе.
На стенде представлена база данных браузера Firefox, см. начало «Как установить БД SQLite на Linux».
Из окна интерфейса, щёлкая по названию, мы попадаем в структуру дерева исследуемой базы.
После установки иконка запуска появится в дереве программ.
Заключение.
Дружественный интерфейс программы определяет широкие возможности для администраторов и пользователей. Возможность использования оконных программных средств позволяет привлекать большое количество людей, особенно пришедших из Windows, к выполнению административных задач для Linux.
БДSQLite отличается от БДMySQL, БДOracle, БДPostgreSQL, БДSQL Server... Он не предназначен в качестве замены или конкурента, какой-либо из выше перечисленных систем. Его не нужно устанавливать и настраивать, ему не требуется отдельного серверного процесса для запуска и остановки — это библиотека бессерверного1 компонента, размер которой менее 750 КБ. При обслуживании не требуется создавать новый экземпляр БД и раздавать права доступа. У SQLite нет файла конфигурации и нет режима клиент серверной связи с ядром процессора (например по TCP / IP), для обмена результатами.
SQLite является встроенным, а не клиент-сервер механизмом. Не существует отдельного серверного процесса для управления БД. Приложение взаимодействует с механизмом базы данных с помощью вызововфункций, а не отправки сообщений отдельному процессу или потоку.
В SQLite все процессы имеют доступ к БД, как к простому текстовому файлу лежащему на диске. Читать БД могут несколько процессов, записывать только один, остальные ждут.
Отличительные особенности SQLite:
Нулевая конфигурация
Бессерверный режим
Текстовый файл базы данных
Единая БД для всех архитектур
Компактный
Хранит любые типы данных
Управляет длиной записи таблиц
Удобен в чтении кода
В качестве компилятора работает виртуальная машина
Общественная лицензия
Применение SQLite охватывает широкий круг устройств — телефоны, смартфоны, приставки, веб-сервера, веб-браузер (Firefox, Chrome и Safari), Skype, iTunes… Имея кросс платформенную поддержку SQLite может использоваться на 32 и 64 разрядных устройствах.
Лицензия для SQLite является общественным достоянием, любой может свободно копировать, изменять, публиковать, использовать, компилировать, продавать или распространять исходный код SQLite, либо в виде исходного кода, либо в виде скомпилированного двоичного файла, для любых целей, коммерческих или некоммерческих, и любыми средствами.
Подготовка.
Стенд:
Simply Linux, имя: lin-sl, IP=10.0.2.30
Как уже упоминалось выше с БД SQLite можно работать находясь на рабочей станции. Прежде чем начать убедимся, что все обновления установлены и ПК находится в актуальном состоянии.
# apt-get update; apt-get dist-upgrade
Для удобства развёртывания можно воспользоваться графическим менеджером управления пакетами Synaptic2.
# apt-get install synaptic
# synaptic
Теперь нам потребуется инструмент, который позволит взаимодействовать с базами SQLite. Консольная утилита sqlite3 написана специально для этого.
# apt-get install sqlite3
Скомпилировать sqlite можно, скачав исходники с сайта производителя.
Управление SQlite.
Для начала разберёмся, на нескольких примерах, с синтаксисом вводимых команд. По умолчанию, при первом запуске sqlite3, происходит подключение к главной базе SQLite, main database file.
$ sqlite3
sqlite> .database
main: "" r/w
sqlite>
Теперь посмотрим какой справочный аппарат входит в утилиту.
$ sqlite3
sqlite> .help
...
Список выводит основные оперативные команды sqlite3.
Перед вводимойкомандой должна стоять точка, после ввода инструкций ставим точку с запятой или / «go» и нажимаем «Enter«. Для комментария используем «#» без пробела перед знаком. Для выхода из sqlite нажимаем ctrl+D, для прерывания выполнения ctrl+C.
Все мы пользуемся браузером на своих цифровых устройствах. Но, мало, кто догадывается, что на большинстве из них в качестве БД работает — SQLite. Если просмотреть каталог профиля своего обозревателя, например Firefox6, мы заметим два неприметных файла:
key4.db — файл хранилища паролей
cert9.db — файл хранилища сертификатов
Попробуем заглянуть внутрь этих файлов нажав F3МС Commander7, предварительно скопировав их, для безопасности, в локальную папку. При попытке открыть для чтения любой из них, мы получим предупреждение.
Теперь мы понимаем — простой командой «заглянуть» внутрь не удастся. Требуется специальная программа, которая умеет открывать такие файлы.
По условию мы находимся в каталоге где хранятся8cert9.db, key4.db.
После экспорта таблиц в Exel, с помощью инструкции SELECT * FROM выводим таблицу на экран.
Такие действия можно выполнить с базой key4.db.
Заключение.
По своим характеристикам SQLite не может конкурировать с корпоративными базами, её задача состоит в другом — работать там где будет «тесно» большим БД. При работе с большими базами мы вместе с функционалом получаем множественное дерево папок и журналов. Всё это занимает место в ОЗУ и HDD устройства и как результат влияет на размер изделия. SQLite «пролезая» в самые миниатюрные устройства, несмотря на свои небольшие возможности, поддерживает резервное копирование, индексацию, откат после аварии, форматы времени и языков и возможность управления GUI9 SQLiteStudio т.е ведёт себя по «взрослому».
Система управления базами данных СУБД «Енисей» относится к типу не реляционной БД «NoSQL» — включен в реестрроссийскогоПО при Минцифры.
Лицензия СУБД Енисей Enterprise включает в себя два вида:
платная подписка 1 ядро один год (базовая)
бессрочная подписка 1 ядро с поддержкой один год
Главное отличие реляционной БД «NoSQL» от реляционной базы данных, например PostgreSQL, — моделирования схемы1.
В реляционной базе, данные разделяется или нормализуется на несколько частей, для хранения в отдельных таблицах, отношения между которыми определяются ключами. В базе данных NoSQL записи хранится в качестве атрибутов, как единый документ JSON2.
Подготовка.
Стенд:
Сервер Astra Linux 2.12 и выше; имя: lin-ast, IP=10.0.2.20
СУБД «Енисей»
Требование к оборудованию.
Минимальные требования
ЦПУ: 2 x -64
частота: >= 2 ГГц
ОЗУ: >= 4Gb
HDD: >=8Gb
Порядок установки СУБД требует, чтобы пользователь, от имени которого выполняется установка, имел право на выполнение команды sudo.
Выполнить из консоли сервера.
trt@ast:~$ sudo -i
root@astra:~#
Сам процесс установки заключается в предварительном скачивании установочного сценария distrib.tar.gz с сайта производителя, распаковки архива distrib.tar.gz и инициализации процесса установки.
Сохранить архив в каталоге home и распаковать.
root@ast:~# cd /home
root@ast:/home# ls
distrib.tar.gz
root@ast:/home# tar xfv distrib.tar.gz
При распаковке создаётся каталог distrib, переходим в него и запускаем установку.
root@ast:/home# cd distrib
После запуска установщика ./install.sh, начинается процедура скачивание с сайта производителя, установочного docker образа, распаковки его и установки «Енисей» на устройство пользователя.
Технология docker включает в себя создание и настройку контейнера с программным изделием, на устройстве производителя, куда включены все базовые службы программы.
Контейнер с изделием проходит этап архивацию и готов для передачи пользователю, для автоматического развёртывания и регистрации всех служб изделия на устройстве пользователя.
root@astra:/home# cd distrib root@astra:/home/distrib# ./install.sh Запуск процедуры установки ПО СУБД "Енисей" означает согласие с условиями Лицензионного соглашения (файл EULA.txt) Вы ознакомились с Лицензионным соглашением? (y - Да / n - Нет)y Установка ... ... Необходимо скачать 11,4 kБ архивов ... Необходимо скачать 58,7 MБ архивов ... [IMAGENARIUM]: Ожидание запуска консоли управления ... [IMAGENARIUM]: Выполнено
Проверяем состояние СУБД после установки.
trt@ast:~$ sudo -i
root@ast:~# systemctl status docker
...
Active: active (running)...
...
Последнее, что надо сделать включить режим автозагрузки для демона docker.
Когда установочные операции успешно закончатся, необходимо запустить браузер и ввести URL http://10.0.2.20:5555/ для входа в интерфейс сервера «Енисей».
Настройка.
После ввода URL СУБД «Енисей», откроется окно приглашения для ввода логин / пароль, из коробки это; admin / YeniPass#123.
Измените пароль при настройке профиля пользователя admin.
При успешной авторизации попадаем в дашборд графической консоли СУБД «Енисей».
Для развёртывания докер-образов, нажать Deploy, выбрать кластер или одинарный СУБД.
Можно воспользоваться готовыми шаблонами докер-образов.
Предупреждение о развертывании нового пакета докер-образов с потерей всех предыдущих данных.
Заключение.
Новые типы баз данных предоставляют компаниям возможность выбора хранилище своих документов. Для подробного ознакомления и обучения, на сайте компании СУБД «Енисей» опубликованы руководства оператора и системного программиста.
[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, переходим к рассмотрению вопросов обеспечения безопасности пользователей использующих БД 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 широка и требует более глубокого рассмотрения.
Продолжая изучение 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.
Как видно из листинга в качестве метода аутентификации, для 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
Таким образом мы установили метод аутентификации md5 с алгоритмом шифрования, scram-sha-256.
Заключение.
В приведённом выше примеры было показано, как установить пароль и метод аутентификации с шифрованием для привилегированного пользователя postgres. Для этого мы использовали самый распространённый метод аутентификации md5.
В дальнейшем, при широком использовании БД PostgreSQL, возникнет потребность доступа к базам данных других пользователей, использующих табличное пространство PqSQL в своей работе. Как создавать новых пользователей и управлять пользовательскими учётными записями, читайте в следующей части цикла статей о PostgreSQL.
Продолжая изучение 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 с localhot на *. Переменная * позволяет разрешить подключение к серверу PgSQL из всех сетевых диапазонов организации по протоколу TCP/IP.
Сервер PqSQL позволяет вести журнал производительности и ошибок своей работы. При установке сервера, режим журналирования отключен. Пользователь, при желании, может включить контроль записи работы сервера с помощью журнала, отредактировав файл postgresql.conf. После наших действий в дереве каталога /var/lib/pgsq/data создаётся папка log, для хранения файлов журналов
Перегружаем сервер для перечитывания новых значений.
-bash-3.2$ pg_ctl restart
Контролируем фиксацию значения.
-bash-3.2$ psql
postgres=# SHOW listen_addresses;
listen_addresses
------------------
*
(1 строка)
Заключение.
В этой части конспекта рассмотрены базовые основы конфигурации и первичного управления сервером PgSQL. Понимание основ позволяет уверенно чувствовать себя при погружение в тему управления сервером баз данных PostgeSQL в дальнейшем.
В семейство управления базами данных входит 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 выполняет архитектуру клиент-сервер, включающий:
# 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 зарекомендовал себя, как надёжный, устойчивый при длительной эксплуатации СУБД. Встроенные возможности PqSQL, позволяют конкурировать с Microsoft SQL и Oracle. Конечно, те кто вложился деньгами и знаниями в изучение и эксплуатацию MS SQL и Oracle, желания переходить или мигрировать на PqSQL не испытывают. Слишком высоки риски, да и годами устоявшиеся система управления вполне устраивает. Но жизнь и время требует новых подходов и решений. Создать с нуля БД и запустить в эксплуатацию это одно, а подготовить и выполнить план по миграции другое. Здесь требуется проведение предварительных действий. Начинать надо с обучения и развёртывания стенда, что бы на практике получать навыки и опыт работы с PostgreSQL.
Если для организации стоит вопрос перехода на PostgreSQL, то прежде всего, надо решить вопрос оборудования и коннектора для миграции. По оборудованию можно обратиться к официальной документации. Миграционный коннектор, под конкретную прикладную программу надо искать, их достаточно, платных и бесплатных, условие одно — тестирование на стенде предприятия. Есть ещё одно решение по миграции, заказать услугу по переходу на PostgreSQL и его сопровождение. Но это прежде всего финансовый вопрос, придут специалисты проведут миграцию, а может и нет в любом случае это время, оборудование и деньги.
В качестве «живого» примера установки и работы PqSQL,читайте статью.
Тема блога, установка, настройка и подключение сервера баз данных MySQL к операционной системе Linux.
MySQL — свободная реляционная система управления базами данных. Поддержку осуществляет корпорация Oracle, Продукт распространяется под двойной лицензией, GNU и коммерческой лицензией.
Гибкость СУБД обеспечивается таблицами:
MyISAM — поддерживает полнотекстовый поиск
InnoDB — поддерживает транзакции на уровне отдельных записей
Сообществом разработчиков созданы различные ответвления кода, такие например как MariaDB.
Версия 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 обуславленно его стабильной работой, мощной документацией и поддержкой сообщества. Используя в качестве приложения этот вид БД, необходимо соблюдать некоторые правила, выполнение которых избавит администратора от ошибок потери важной информации. Главное правило — резервное копирование, отведите на изучение и тестирования этого важного механизма необходимое время. Проверяйте, периодически, создаваемые резервные копии, храните их на разных устройствах. Организуйте автоматизацию процесса создания и удаления старых копий. Выучите основные команды управления и обслуживании сервера. Продумайте систему безопасности прав доступа к БД.