MariaDB — система управления базами данных (далее СУБД) с открытым исходным кодом. Часто используется в качестве альтернативы MySQL.
СУБД — это набор программ, который позволяет работать с базами данных, а именно: предоставляет средства для выборки, изменения, вставки, удаления данных, а также обеспечивает их целостность. Безопасное и надёжное хранение информации — также зона ответственности СУБД.
📜 Читайте также: Установка NextCloud на Ubuntu 20.04
Реляционные базы данных
MariaDB относится к так называемым реляционным СУБД. Реляционными базами данных называются базы, данные в которых организованы в двумерные таблицы из строк и столбцов. В строках содержатся значения свойств, а в столбцах — сами свойства объекта.
Отношения между разными объектами (таблицами) задаются с помощью внешних ключей. Это позволяет минимизировать объёмы данных в таблице и обеспечивает целостность системы (исключает дубли). Также такую базу данных лекго масштабировать.
В таких базах данных запросы формируются с помощью специального структурированного языка SQL (Structured Query Language). Он позволяет производить все необходимые действия с базой данных: делать выборки, группировать их, модифицировать и удалять строки и столбцы. С помощью SQL также администрируется доступ пользователей к операциям, создаются базы данных и так далее.
Сравнение с MySQL
MariaDB — продукт с исходным кодом, который появился в 2008 году как форк от MySQL. И хотя сейчас MariaDB имеет почти 25% уникальной кодовой базы, преимущества и недостатки этой СУБД часто рассматривают в сравнении с MySQL.
Открытый исходный код
Одним из преимуществ MariaDB является то, что это Open-source-проект. Любой разработчик может привнести изменения в код под свои нужды или вынести предложение об оптимизациях или обсудить нововведения в email-рассылках.
Исходный код же MySQL доступен только разработчикам Oracle. И хотя команда пристально следит за всеми предложениями об улучшениях и баг-репортами, разработка всё равно ведётся закрыто.
Механизмы хранения
Помимо стандартных механизмов хранения данных, которые можно встретить в MySQL, MariaDB поддерживает ещё около 12 движков, среди которых Aria — замена MyISAM (движка от MySQL).
Производительность
Движок Aria в целом считается производительнее, чем MyISAM за счёт сегментированного кэша ключей, колоночного хранилища и прочих улучшений.
Помимо этого одна из последних версий MariaDB — 10 — допускает параллельное выполнение запросов, что существенно повышает производительность в сравнении с MySQL.
Версионирование
Для каждой версии MySQL команда разработчиков MariaDB выпускает тот же номер версии своего продукта. Это указывает пользователям на то, что MariaDB совместима с соответствующей версией MySQL, а значит можно беспрепятственно осуществить переход на эту СУБД без существенных изменений в коде проекта.
Установка
Для того, чтобы показать пример установки MariaDB, нам подойдут любые облачные серверы, с установленной ОС Ubuntu 20.04 и пользователь с правами администратора.
Перед установкой обновляем индекс пакетов на сервере:
sudo apt update
Далее — установка пакета mariadb:
sudo apt install mariadb-server
Пакет MariaDB установлен, однако СУБД ещё не готова к работе. По умолчанию она устанавливается в отладочном режиме — содержит анонимных пользователей, а удалённый вход для пользователя root в MariaDB разрешён. Такое не допустимо в боевом режиме работы СУБД.
В MariaDB настройка и повышение уровня безопасности обеспечиваются скриптом mysql_secure_installation, который поставляется в составе пакета mariadb-server.
Запустим скрипт:
sudo mysql_secure_installation
Мастер настройки предложит пользователю ввести пароль для учётной записи root. Однако мы устанавливаем MariaDB впервые и ещё не задавали пароль, поэтом просто нажимаем Enter и переходим к следующему шагу.
Авторизация через Unix-сокеты
Далее система предложит переключиться на систему аутентификации через сокеты Unix. Этот метод рекомендуется установить по умолчанию.
Плагин unix_socket позволяет использовать учётную запись пользователя в системе при подключении к MariaDB.
Это обеспечивает безопасность базы данных. Так, например, пользователь www-data, из-под которого чаще всего работает веб-сервер, не сможет получить неограниченный доступ с помощью привилегий root. Более того, у злоумышленников не получится подобрать пароль перебором, а у администратора не будет возможности скомпрометировать доступ, поскольку пароль не используется при аутентификации.
Дальнейшие шаги
Дальнейшие диалоговые окна предложат вам отключить анонимный доступ, удалённую авторизацию root-пользователя, удалить временные таблицы и перезагрузить настройки. На все предложения отвечайте Y или Enter.
Установка и настройка MariaDB на этом завершена.
Создание доступа по паролю
Аутентификация с помощью unix-сокетов полезна для администраторов, но не подходит в ряде случаев. Например, если вы настраиваете phpMyAdmin и вам нужно предоставить программе права администратора, необходимо иметь учётную запись с доступом по паролю.
Настоятельно не рекомендуется изменять учётную запись root. Она используется для служебных операций — журналирование, ротация, запуск и остановка сервера. К тому же изменения, которые вы внесёте в файл конфигурации будут перезаписаны при любом плановом обновлении пакета mariadb-server.
Вместо этого рекомендуется создать новую учётную запись с теми же привилегиями, что у суперпользователя root, но предоставить доступ по паролю. Пароль должен быть надёжным, а в случае, если он скомпрометирован или утерян, его всегда можно поменять.
В нашем примере создадим пользователя admin. Для этого перейдём в командную строку MariaDB:
sudo mariadb
Затем создадим пользователя админ с правами root и аутентификацией по паролю:
MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'Pa$$w0rd' WITH GRANT OPTION;
где Pa$$w0rd — ваш пароль.
Сохраняем новые привилегии:
MariaDB [(none)]> FLUSH PRIVILEGES;
Изменения применились и стали доступны в текущем сеансе. Из оболочки MariaDB можно выйти:
MariaDB [(none)]> exit;
Тестирование MariaDB
При установке из официального репозитория служба MariaDB запускается автоматически. Проверим это:
sudo systemctl status mariadb.service
В результате увидим вывод:
● mariadb.service - MariaDB 10.3.34 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-08-20 13:32:24 UTC; 5min ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 466678 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 1132)
Memory: 70.6M
CGroup: /system.slice/mariadb.service
└─466678 /usr/sbin/mysqld
Если служба не запущена, нужно сделать это вручную с помощью диспетчера systemd:
sudo systemctl start mariadb.service
Для запуска команд администрирования используется инструмент mysqladmin, проверим работает ли он, отобразив номер версии:
sudo mysqladmin version
Всё работает корректно, если в результате отображается такой вывод:
mysqladmin Ver 9.1 Distrib 10.3.34-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.3.34-MariaDB-0ubuntu0.20.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 6 min 35 sec
Threads: 6 Questions: 69 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.174
Действия с таблицами
Проверим работу СУБД — выполним простые взаимодействия с MariaDB. Для этого перейдём в учётную запись admin и выполним несколько простых действий с реляционными базами данных.
Переходим в учётную запись admin:
sudo mariadb -u admin -p
Создаём таблицу example_db:
MariaDB [(none)]> CREATE DATABASE example_db;
Для каждой базы данных рекомендуется создавать отдельного пользователя — работа нескольких программ или сайтов в одной учётной записи небезопасна.
Так при утечке пароля в одном из сервисов злоумышленник не получит доступ ко всем базам данных, а администратор сможет заблокировать одного пользователя СУБД без ущерба для всех продуктов.
В нашем случае создадим пользователя example_user и предоставим ему права только на базу данных example_db.
MariaDB [(none)]> CREATE USER 'example_user' IDENTIFIED BY 'password';
… где password — пароль учётной записи.
Установим привилегии:
MariaDB [(none)]> GRANT ALL ON *.'example_db' TO 'example_user'@localhost IDENTIFIED BY 'password';
Выходим:
MariaDB [(none)]> exit;
Теперь переключимся на этого пользователя:
sudo mariadb -u example_user -p
… и создадим таблицу с одной колонкой id, чтобы убедиться, что всё установлено и сконфигурировано правильно:
MariaDB [(none)]> USE example_db;
MariaDB [example_db]> CREATE TABLE example_table (id INT(11));
Убедимся, что таблица появилась:
MariaDB [example_db]> SHOW TABLES;
Вывод:
+----------------------+
| Tables_in_example_db |
+----------------------+
| example_table |
+----------------------+
1 row in set (0.000 sec)
Удаление MariaDB
Если вам больше не нужна установленная на сервере MariaDB, можно удалить СУБД с помощью команды:
sudo apt -y purge mariadb-server
… и удалением автоматически установленных пакетов:
sudo apt -y autoremove
При этом сами файлы базы данных остались в системе. Если нужно их безвозвратно удалить, выполните команду:
sudo rm -Rf /var/lib/mysql
Заключение
В статье мы разобрались с тем, как установить СУБД MariaDB на сервер с операционной системой Ubuntu 20.04. В рамках статьи при установке MariaDB воспользовались облачными решениями Timeweb Cloud.
Помимо простой установки и настройки перевели MariaDB в боевой режим с помощью утилиты mysql_secure_installation.
Вкратце ознакомились с тем, что такое реляционные базы данных и рассмотрели отличия MySQL и MariaDB.
Установку проверили, создав нескольких пользователей с разными режимами доступа, а также добавлением тестовой базы данных и таблицы.
Статья оказалась полезной? Подписывайтесь, ставьте лайки и поделитесь ссылкой с друзьями.💗