Найти тему
Timeweb Cloud

Как установить MariaDB в Ubuntu 20.04

Оглавление

MariaDB — система управления базами данных (далее СУБД) с открытым исходным кодом. Часто используется в качестве альтернативы MySQL.

СУБД — это набор программ, который позволяет работать с базами данных, а именно: предоставляет средства для выборки, изменения, вставки, удаления данных, а также обеспечивает их целостность. Безопасное и надёжное хранение информации — также зона ответственности СУБД.

📜 Читайте также: Установка NextCloud на Ubuntu 20.04

Реляционные базы данных

MariaDB относится к так называемым реляционным СУБД. Реляционными базами данных называются базы, данные в которых организованы в двумерные таблицы из строк и столбцов. В строках содержатся значения свойств, а в столбцах — сами свойства объекта.

Отношения между разными объектами (таблицами) задаются с помощью внешних ключей. Это позволяет минимизировать объёмы данных в таблице и обеспечивает целостность системы (исключает дубли). Также такую базу данных лекго масштабировать.

-2

В таких базах данных запросы формируются с помощью специального структурированного языка 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.

-3

Установка и настройка 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.

Установку проверили, создав нескольких пользователей с разными режимами доступа, а также добавлением тестовой базы данных и таблицы.

Статья оказалась полезной? Подписывайтесь, ставьте лайки и поделитесь ссылкой с друзьями.💗