Установка MariaDB на Debian 13, 12, 11: подробное руководство

MariaDB — это популярная система управления базами данных (СУБД), совместимая с MySQL. Она используется для хранения данных веб-сайтов (WordPress, Joomla), приложений и сервисов. В отличие от Oracle MySQL, MariaDB полностью открыта и активно развивается сообществом. В Debian MariaDB находится в стандартных репозиториях, поэтому установка не требует добавления сторонних источников.

💡 В этом руководстве мы установим MariaDB из официальных репозиториев Debian, выполним начальную настройку безопасности, научимся управлять сервисом и при необходимости полностью удалим базу данных.

В этой статье вы узнаете:

  • Как установить MariaDB Server и клиент
  • Какие версии MariaDB в разных выпусках Debian
  • Как выполнить первоначальную настройку безопасности (пароль root, удаление анонимных пользователей)
  • Как управлять сервисом MariaDB (запуск, остановка, статус)
  • Как установить только клиент (для удалённого подключения)
  • Как создать отдельного пользователя и базу данных для приложения
  • Как удалить MariaDB и очистить данные

Оглавление

Оглавление

1. 🔧 Предварительные требования

Перед установкой убедитесь, что:

  • У вас установлена Debian 11, 12 или 13 (любая редакция)
  • Подключение к интернету стабильно
  • У вас есть хотя бы 500 МБ свободного места (для базы данных потребуется больше)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo -l

Что делает: Проверяет, есть ли у текущего пользователя права суперпользователя.

⚠️ Пароль при первом запуске! В зависимости от настроек в /etc/sudoers, при первом выполнении sudo -l в текущей сессии система может запросить ваш пароль (если не активировано правило NOPASSWD).

✅ Ожидаемый результат: Список разрешённых команд. Если видите (ALL : ALL) ALL — у вас полный доступ.

❌ Если видите ошибку user is not in the sudoers file или may not run sudo — сначала пройдите наше руководство по настройке sudo. Без этого дальнейшие шаги не сработают.

Обновление системы

Перед установкой всегда обновляйте список пакетов:

sudo apt update
sudo apt upgrade

Что делает:

  • sudo — права суперпользователя
  • apt update — обновляет список доступных пакетов
  • apt upgrade — обновляет все установленные пакеты

Зачем: Это стандартная практика безопасности перед установкой нового ПО.

💡 Примечание: Флаг -y автоматически подтверждает все действия. При обучении его лучше не использовать: так вы видите список пакетов и можете отменить установку, если что-то выглядит подозрительно. Если вы уверены в своих действиях, можно добавить -y.

2. 📊 Версии MariaDB в разных выпусках Debian

Версия DebianВерсия MariaDBИсточникДля кого
Debian 13 (Trixie)11.8.xtrixie/mainНовые проекты, нужна
свежая версия
Debian 12 (Bookworm)10.11.xbookworm/mainСтабильные продакшн-
системы
Debian 11 (Bullseye)10.5.xbullseye-securityСтарые системы,
совместимость

💡 Рекомендация: Используйте версию из вашего Debian по умолчанию. Она получает обновления безопасности через официальные репозитории. Если вам нужна более новая версия, чем предлагает Debian, рассмотрите официальный репозиторий MariaDB, но это выходит за рамки данного руководства.

3. 📦 Установка MariaDB Server и клиента

3.1 Установка пакетов

sudo apt install mariadb-server mariadb-client

Что делает:

  • mariadb-server — сам сервер базы данных (служба)
  • mariadb-client — клиент командной строки для управления базой данных

Зачем: Клиент нужен для выполнения SQL-запросов, создания пользователей, дампов и т.д. Сервер — это ядро СУБД.

3.2 Проверка установки

mariadb --version

Ожидаемый вывод в терминале (Debian 13):

mariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper
  • Для Debian 12: 10.11.14-MariaDB
  • Для Debian 11: 10.5.29-MariaDB

3.3 Проверка статуса сервиса

systemctl is-enabled mariadb && systemctl is-active mariadb

Ожидаемый вывод:

enabled
active

Что делает:

  • is-enabled — проверяет, запускается ли MariaDB при загрузке системы
  • is-active — проверяет, работает ли сервис сейчас

Если сервис не активен:

sudo systemctl enable mariadb --now

4. 🔒 Настройка безопасности MariaDB

После установки MariaDB имеет небезопасные настройки по умолчанию:

  • Пустой пароль для root
  • Анонимные пользователи (без пароля)
  • Тестовая база данных
  • Возможность удалённого входа под root

Для исправления этого запустите скрипт безопасности:

sudo mariadb-secure-installation

Что делает: Интерактивный скрипт, который задаёт вопросы и меняет настройки.

4.1 Пошаговое прохождение скрипта

Скрипт задаст несколько вопросов. Вот рекомендуемые ответы:

ВопросРекомендуемый ответЧто меняет
Switch to unix_socket authentication?Y (yes)Позволяет пользователю root системы
входить в MariaDB без пароля
Change the root password?Y (yes)Установить пароль для root
(если не используете unix_socket)
Remove anonymous users?Y (yes)Удаляет анонимных пользователей
Disallow root login remotely?Y (yes)Запрещает вход под root
с других компьютеров
Remove test database and access to it?Y (yes)Удаляет тестовую базу данных
Reload privilege tables now?Y (yes)Применяет изменения немедленно

Что делает unix_socket authentication: Позволяет вам (и только вам) подключаться к MariaDB командой sudo mariadb без ввода пароля. Это удобно и безопасно, так как другие пользователи не имеют доступа к вашей учётной записи.

⚠️ Важно о unix_socket:

Если вы включите unix_socket, то обычный вход mariadb -u root -p перестанет работать. Подключаться можно будет только через sudo mariadb. Для скриптов и приложений это может быть неудобно: им нужен именно пароль, а не sudo.

Какой вариант выбрать:

СценарийЧто выбрать
Только для тестов/личного использованияunix_socket = Y
Для веб-приложения, скриптов, CI/CDunix_socket = N, задать пароль root

Рекомендация: если планируете использовать MariaDB для веб-приложений (WordPress, Nextcloud и т.п.) или скриптов, лучше не включать unix_socket, а задать надёжный пароль для root и создать отдельного пользователя под приложение.

5. 🛠️ Основные команды администрирования

5.1 Подключение к MariaDB

Если вы выбрали unix_socket authentication (рекомендуется):

sudo mariadb

Если вы установили пароль для root:

mariadb -u root -p

5.2 Проверка привязки к localhost

По умолчанию MariaDB слушает только локальный интерфейс (127.0.0.1). Это безопасно, если веб-приложение и база данных находятся на одном сервере.

sudo grep -E '^bind-address' /etc/mysql/mariadb.conf.d/50-server.cnf

Ожидаемый вывод: bind-address = 127.0.0.1

Зачем: Если вывод отличается (например, 0.0.0.0 или пустой), MariaDB доступна из сети, что может быть небезопасно.

Что делать, если вывод не тот:

  • Если bind-address отсутствует или стоит 0.0.0.0 — сервер слушает все интерфейсы. Это небезопасно, если нет фаервола.
  • Чтобы ограничить только localhost, откройте конфиг:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Добавьте (или исправьте) строку:

bind-address = 127.0.0.1

Сохраните, затем перезапустите сервис:

sudo systemctl restart mariadb

5.3 Создание отдельного пользователя и базы данных для приложения

Для безопасности рекомендуется создавать отдельного пользователя для каждого приложения, а не использовать root.

Подключитесь к MariaDB:

sudo mariadb

Выполните SQL-запросы:

-- Создание базы данных (замените testdb на нужное имя)
CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Создание пользователя (замените testuser и пароль на свои значения)
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'надёжный_пароль';

-- Выдача прав на базу данных
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';

-- Применение изменений
FLUSH PRIVILEGES;

-- Выход
EXIT;

5.4 Управление сервисом

# Остановить MariaDB
sudo systemctl stop mariadb

# Запустить MariaDB
sudo systemctl start mariadb

# Перезапустить MariaDB
sudo systemctl restart mariadb

# Посмотреть статус
systemctl status mariadb

6. 🖥️ Установка только клиента (без сервера)

Если вам нужно подключаться к удалённой базе данных (например, на другом сервере), устанавливать сервер не обязательно.

sudo apt install mariadb-client

Что делает: Устанавливает только клиент командной строки (mariadb, mariadb-dump и другие).

Зачем: Экономит место и ресурсы, если сама база данных работает на другом сервере.

Подключение к удалённому серверу:

mariadb -h 192.168.1.100 -u username -p

7. ❌ Удаление MariaDB

7.1 Остановка сервиса

Перед удалением остановите сервис и отключите автозагрузку:

sudo systemctl disable --now mariadb

Что делает: Останавливает MariaDB (--now) и убирает его из автозагрузки (disable).

7.2 Удаление пакетов

Универсальная команда, которая удалит все пакеты MariaDB:

sudo apt remove --purge mariadb-server* mariadb-client*

Что делает:

  • remove --purge — удаляет пакеты и их конфигурационные файлы
  • mariadb-server* — удалит и mariadb-server, и mariadb-server-10.5 и т.д.

7.3 Удаление зависимостей

sudo apt autoremove

Что делает: Удаляет пакеты, которые были установлены как зависимости для MariaDB, но больше не нужны.

7.4 Удаление данных базы данных (опционально)

⚠️ Внимание: Следующая команда безвозвратно удаляет ВСЕ ваши базы данных. Сделайте резервную копию, если нужно что-то сохранить.

sudo rm -rf /var/lib/mysql

Что делает: Удаляет директорию с данными всех баз данных.

7.5 Удаление конфигурационных файлов (опционально)

sudo rm -rf /etc/mysql

Что делает: Удаляет конфигурационные файлы MariaDB.

7.6 Проверка удаления

apt-cache policy mariadb-server

Ожидаемый вывод:

mariadb-server:
  Installed: (none)
  Candidate: 1:11.8.6-0+deb13u1

8. ⚠️ Решение типичных проблем

8.1 Ошибка: Can’t connect to local MySQL server through socket

Симптом: При попытке подключиться к MariaDB появляется ошибка:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

Причина: Сервис MariaDB не запущен.

Решение: Запустите сервис:

sudo systemctl start mariadb
sudo systemctl enable mariadb

8.2 Ошибка: Access denied for user ‘root’@’localhost’

Симптом: Не удаётся войти под root.

Причина: Вы не используете sudo при подключении (если выбрали unix_socket) или забыли пароль.

Пошаговое решение:

Шаг 1: Проверьте, какой метод аутентификации у root:

sudo mariadb -e "SELECT user, host, plugin FROM mysql.user WHERE user='root';"

Шаг 2: Если plugin = unix_socket — вход только через sudo mariadb, пароль не нужен.

Шаг 3: Если plugin = mysql_native_password или auth_plugin, то нужен пароль.

Шаг 4: Если пароль забыт и нет возможности восстановить иначе:

sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
sudo mariadb

Внутри MariaDB:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
EXIT;

Затем перезапустите MariaDB:

sudo systemctl restart mariadb

⚠️ Примечание: Этот метод требует осторожности. В современных версиях вместо mysqld_safe иногда используют прямой запуск с параметрами или systemd-обёртки. Если команда не работает, используйте:

sudo systemctl stop mariadb
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

8.3 MariaDB не запускается после изменения конфигурации

Симптом: После редактирования /etc/mysql/mariadb.conf.d/50-server.cnf сервис не запускается.

Решение: Проверьте синтаксис конфигурационного файла:

sudo mysqld --verbose --help

Или посмотрите логи:

sudo journalctl -u mariadb -n 50 --no-pager

8.4 Ошибка: mariadb-secure-installation: command not found

Симптом: Команда sudo mariadb-secure-installation не найдена.

Причина: В очень старых версиях MariaDB используется другое имя.

Решение: Используйте альтернативную команду:

sudo mysql_secure_installation

9. 📝 Чек-лист: всё готово к работе

  • [ ] MariaDB установлен: mariadb --version показывает версию
  • [ ] Сервис активен: systemctl is-active mariadb возвращает active
  • [ ] Скрипт безопасности выполнен: sudo mariadb-secure-installation
  • [ ] Можете подключиться: sudo mariadb открывает SQL-промпт
  • [ ] Создана тестовая база и пользователь: CREATE DATABASE testdb; CREATE USER ...; GRANT ...
  • [ ] Приложение (например, WordPress) может подключиться к базе через локальный сокет
  • [ ] После перезагрузки сервера MariaDB запускается автоматически: systemctl is-enabled mariadb = enabled

10. ❓ Часто задаваемые вопросы (FAQ)

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

Вопрос: Как создать резервную копию базы данных?
Ответ: Используйте mariadb-dump: mariadb-dump -u root -p имя_базы > backup.sql.

Вопрос: Как восстановить базу данных из резервной копии?
Ответ: mariadb -u root -p имя_базы < backup.sql.

Вопрос: Можно ли установить MariaDB на Raspberry Pi?
Ответ: Да, MariaDB доступна для архитектуры arm64 и armhf в Debian.

Вопрос: Как узнать, какая версия MariaDB установлена?
Ответ: mariadb --version.

Связанные статьи:

Как добавить пользователя в sudoers в Debian 13, 12, 11: полное руководство

Заключение

Вы успешно установили MariaDB на Debian. Теперь у вас есть полноценная система управления базами данных, совместимая с MySQL. Вы выполнили начальную настройку безопасности, научились управлять сервисом и можете подключаться к базе данных из командной строки.

Что дальше:

  • Настройте базу данных для вашего приложения (WordPress, Nextcloud, Laravel)
  • Изучите официальную документацию MariaDB
  • Настройте резервное копирование баз данных с помощью mariadb-dump
  • Для работы с базами данных через веб-интерфейс установите phpMyAdmin