MariaDB – система управления базами данных реляционного типа. Поставляется с открытым кодом, чем заслужила популярность в качестве замены для MySQL. Часто входит в комплексы LAMP (состоят из Linux, Apache, MySQL и PHP, иногда с компиляторами Python, Perl). В этом материале рассмотрим краткую инструкцию по настройке MariaDB.
Она включает всего три этапа – понадобится скачать обновление индекса пакетов, инсталлировать mariadb-server и активировать скрипт безопасности, ограничивающий доступ посторонних к удаленному хосту. В качестве тестовой базы рекомендуем использовать облачные серверы, например, арендованные у провайдера Timeweb Cloud.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
Кратко последовательность команд выглядит так:
sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation
Все примеры будем приводить на базе предустановленной операционной системы Ubuntu. Перед изучением материала желательно провести первоначальную настройку. Например, создать аккаунт без привилегий root (достаточно прав администратора), задать базовые правила брандмауэру UFW.
Репозитории регулярно обновляют, в них размещают стабильные версии утилит. Дистрибутивы же включают устаревшие релизы, актуальные на момент сборки, поэтому их необходимо обновлять, чтобы избежать несовместимости. Выполняется процедура командой:
sudo apt update
Теперь можно устанавливать нужный нам пакет:
sudo apt install mariadb-server
Инсталляция проходит без запроса пароля, без внесения иных изменений в конфигурацию. В таком виде использовать MariaDB на сервере нежелательно, потому что она будет работать в небезопасном режиме. Чтобы исправить ситуацию применим скрипт mysql_secure_installation, поставляемый в комплекте с программным обеспечением. Он блокирует доступ к серверу, исключит учетки.
Скрипт безопасности изменяет незащищенные опции, устанавливаемые по умолчанию. Например, создаются тестовые аккаунты, возможность удаленного подключения под учеткой root. Это потенциально создает опасность взлома, несанкционированного доступа к информации, хранящейся в созданной базе данных.
Запуск скрипта следующей командой:
sudo mysql_secure_installation
Она запускает цепочку открытия диалогов, позволяющих изменить параметры безопасности БД. Первый запрос относится к аккаунту root, система запросит пароль для активной базы данных. Если он еще не настроен, достаточно нажать Enter. Это укажет, что защита пока отсутствует.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
Следующий диалог предлагает ввести пароль пользователя root в MariaDB. Это стоит сделать сразу, если используется метод аутентификации, отличный от unix socket, иначе любой желающий сможет зайти в систему с пустым или вообще любым паролем. Поэтому отвечаем на запрос Y (Yes) и нажимаем Enter.
. . .
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
Теперь взаимодействие с MariaDB будет возможно только после ввода правильного пароля. Завершим настройку – на все последующие вопросы можно ответить утвердительно нажатием клавиши Y (Yes) и подтверждением кнопкой Enter.
Система самостоятельно удалит тестовую БД, анонимные учетки, отключит доступ через аккаунт root, загрузит обновленные правила. Установка и настройка пакета MariaDB завершена, можно приступать к эксплуатации. Или пройти необязательный этап по созданию администратора для активации доступа по паролю.
По умолчанию в Ubuntu установка MariaDB осуществляется при помощи плагина unix_socket, поэтому запрос пароля не применяется. В большинстве случаев такой подход дает высокий уровень безопасности. Но одновременно усложняет администрирование, например, через phpMyAdmin. При старте-остановке сервера, управлении журналами используется учетка root.
Именно поэтому мы не стали менять ее данные. Но при обновлении пакета они могут измениться «самостоятельно», поэтому лучше сразу включить работу по паролю. В качестве примера создадим учетку с названием admin и зададим ей те же права, что и у root. Сначала откройте командную строку MariaDB:
sudo mariadb
И уже в ней создайте нового пользователя:
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Вместо admin и password задайте любые предпочитаемые комбинации. Так, имя часто задают «нестандартное», чтобы усложнить взлом путем подбора пароля. После создания аккаунта сделаем очистку привилегий с сохранением настроек в текущем сеансе.
FLUSH PRIVILEGES;
Теперь можно закрывать оболочку:
exit;
Остается провести тестирование MariaDB, чтобы убедиться в корректности настроек.
При инсталляции системы СУБД из официального репозитория устанавливает настройки, чтобы модуль MariaDB запускался автоматом. Но все равно лучше вручную проверить его статус:
sudo systemctl status mariadb
Вывод на экран будет выглядеть так:
mariadb.service - MariaDB 10.3.22 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-05-12 15:28:13 UTC; 2min 45s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 25914 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 31 (limit: 2345)
Memory: 65.6M
CGroup: /system.slice/mariadb.service
└─25914 /usr/sbin/mysqld
Если утилита не запущена, это нужно сделать вручную, заодно следует запустить службу:
sudo systemctl enable mariadb
sudo systemctl start mariadb
После принудительного запуска можно сделать пробное подключение к базе данных при помощи mysqladmin. Эта утилита позволяет обращаться к БД с правами администратора, запускать команды и изменять настройки. Приведем пример подключения с выводом номера версии:
sudo mysqladmin version
Вывод на экран будет выглядеть так:
mysqladmin Ver 9.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2019, Oracle, MariaDB Corporation Ab and others.
Server version 10.3.22-MariaDB-1ubuntu1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 5 min 39 sec
Threads: 7 Questions: 467 Slow queries: 0 Opens: 177 Flush tables: 1 Open tables: 31 Queries per second avg: 1.615
Если был настроен доступ при помощи пароля администратора, подойдет команда:
mysqladmin -u admin -p version
Вывод текущей версии подтверждает, что база данных запущена и функционирует, а пользователь имеет доступ к ее содержимому.
Мы завершили обзор процедуры установки и настройки СУБД MariaDB. Сразу разобрали способ защиты от несанкционированного доступа к базе данных и создание нового пользователя, который будет иметь доступ к информации наравне с root.