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.x | trixie/main | Новые проекты, нужна свежая версия |
| Debian 12 (Bookworm) | 10.11.x | bookworm/main | Стабильные продакшн- системы |
| Debian 11 (Bullseye) | 10.5.x | bullseye-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/CD | unix_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