Установка MySQL 8.0 на Debian 12 и 11: подробное руководство

MySQL 8.0 — это широко используемая реляционная система управления базами данных (СУБД), которая работает везде: от небольших веб-приложений на WordPress до крупных хранилищ данных для электронной коммерции. MySQL обеспечивает производительность и надёжность, необходимые для хранения данных ваших приложений.

💡 В Debian по умолчанию используется MariaDB (по причинам лицензирования), но вы можете установить официальный MySQL 8.0 от Oracle. В этом руководстве мы добавим официальный APT-репозиторий Oracle, установим MySQL 8.0, выполним начальную настройку безопасности и научимся управлять сервисом.

⚠️ Важно: MySQL 8.0 достиг конца жизненного цикла (EOL) в апреле 2026 года. Планируйте миграцию на MySQL 8.4 LTS или MariaDB до апреля 2026. Oracle предоставляет пакеты для Debian 12 и 11, но Debian 13 (Trixie) официально не поддерживается (пользователям Debian 13 рекомендуется устанавливать MySQL 8.4 LTS или MariaDB).

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

  • Как установить MySQL 8.0 через официальный репозиторий Oracle
  • Как выполнить начальную настройку безопасности (пароль root, удаление анонимных пользователей)
  • Как управлять сервисом MySQL
  • Как обновлять и удалять MySQL
  • Как решить типичные проблемы (GPG-ключи, сброс пароля root, аутентификация)

Для кого: разработчики, администраторы серверов (WordPress, Laravel), пользователи Debian 12 и 11 (Debian 13 не поддерживается).

Оглавление

Оглавление

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

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

  • У вас установлена Debian 12 (Bookworm) или Debian 11 (Bullseye) — Debian 13 не поддерживается
  • Подключение к интернету стабильно
  • У вас есть хотя бы 1 ГБ свободного места (для базы данных потребуется больше)

⚠️ ВАЖНО: Проверьте права 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.

Установка вспомогательных пакетов

sudo apt install ca-certificates curl gpg lsb-release

Что делает:

  • ca-certificates — пакет с корневыми сертификатами для проверки HTTPS
  • curl — утилита для скачивания файлов
  • gpg — инструмент для работы с цифровыми подписями
  • lsb-release — утилита для определения версии Debian

Зачем: Эти пакеты нужны для безопасного добавления репозитория MySQL.

2. 📊 Доступность MySQL 8.0 по версиям Debian

Версия DebianВерсия MySQL 8.0Статус поддержкиРекомендация
Debian 12 (Bookworm)8.0.45ПоддерживаетсяСледуйте этому
руководству
Debian 11 (Bullseye)8.0.37ПоддерживаетсяСледуйте этому
руководству
Debian 13 (Trixie)НедоступенНе поддерживаетсяИспользуйте MySQL 8.4
LTS или MariaDB

⚠️ Важно: Debian 13 (Trixie) не поддерживается официальным репозиторием MySQL 8.0. Если вы используете Debian 13, рассмотрите установку MariaDB или MySQL 8.4 LTS.

3. 🚀 Установка MySQL 8.0 через официальный репозиторий Oracle (рекомендуемый)

Этот метод даёт полный контроль над репозиторием и использует официальный ключ Oracle.

3.1 Импорт официального GPG-ключа MySQL

curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg

Что делает:

  • curl -fsSL — скачивает официальный GPG-ключ с сайта MySQL
  • gpg --dearmor — преобразует ключ из текстового формата в бинарный
  • -o /usr/share/keyrings/mysql.gpg — сохраняет ключ в стандартную директорию

Зачем: Это официальный ключ Oracle, который публикуется для репозитория MySQL. Использование keyserver.ubuntu.com не гарантирует подлинность пакетов.

3.2 Создание конфигурации репозитория (классический формат .list)

Для максимальной совместимости со всеми версиями Debian используем классический формат .list с явным указанием Signed-By:

sudo tee /etc/apt/sources.list.d/mysql.list > /dev/null <<EOF
deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian $(lsb_release -cs) mysql-8.0 mysql-tools
EOF

Что делает:

  • $(lsb_release -cs) — автоматически подставляет кодовое имя вашей Debian (bookworm или bullseye)
  • $(dpkg --print-architecture) — подставляет архитектуру (amd64, arm64 и т.д.)
  • signed-by= — явно привязывает ключ к репозиторию

Зачем: Этот формат работает на всех версиях Debian 11/12 без сюрпризов и совместим со всеми утилитами APT.

3.3 Обновление списка пакетов и установка MySQL

sudo apt update
sudo apt install mysql-community-server

Что делает: Устанавливает MySQL Community Server из репозитория Oracle.

3.4 Настройка пароля root во время установки

Во время установки появится окно с запросом:

  • Root password — введите надёжный пароль для пользователя root MySQL
  • Confirm password — подтвердите пароль
  • Authentication plugin — выберите caching_sha2_password (рекомендуется для новых приложений)

💡 Навигация: Используйте клавишу Tab для перемещения между полями, Enter для подтверждения.

4. 🔍 Проверка установки

4.1 Проверка версии

apt-cache policy mysql-community-server

Ожидаемый вывод для Debian 12:

mysql-community-server:
  Installed: 8.0.45-1debian12
  Candidate: 8.0.45-1debian12

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

systemctl status mysql

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

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled)
     Active: active (running) since ...

4.3 Проверка подключения

mysql -u root -p

Введите пароль root, который вы задали при установке. При успешном подключении увидите приглашение MySQL:

mysql>

Введите exit для выхода.

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

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

sudo mysql_secure_installation

Вопросы и рекомендуемые ответы:

ВопросРекомендуемый ответЧто меняет
VALIDATE PASSWORD component?Y (yes)Включает проверку сложности
паролей
Change root password?N (no)Пароль уже задан при установке
Remove anonymous users?Y (yes)Удаляет анонимных пользователей
Disallow root login remotely?Y (yes)Запрещает вход под root с других
компьютеров
Remove test database?Y (yes)Удаляет тестовую базу данных
Reload privilege tables?Y (yes)Применяет изменения

6. 🛠️ Управление сервисом MySQL

# Проверить статус
systemctl status mysql

# Остановить MySQL
sudo systemctl stop mysql

# Запустить MySQL
sudo systemctl start mysql

# Перезапустить MySQL
sudo systemctl restart mysql

# Отключить автозапуск
sudo systemctl disable mysql

# Включить автозапуск
sudo systemctl enable mysql

7. 🔄 Обновление MySQL

MySQL обновляется через стандартные команды APT:

# Обновить только MySQL
sudo apt update
sudo apt install --only-upgrade mysql-community-server

# Или обновить всё
sudo apt update && sudo apt upgrade

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

8. ❌ Удаление MySQL

8.1 Остановка и удаление пакетов

sudo systemctl stop mysql
sudo apt remove --purge mysql-community-server mysql-community-client mysql-common
sudo apt autoremove

8.2 Удаление репозитория

sudo rm -f /etc/apt/sources.list.d/mysql.list
sudo rm -f /usr/share/keyrings/mysql.gpg
sudo apt update

8.3 Удаление данных базы данных (только если вы уверены!)

⚠️ Критическое предупреждение: Эта команда безвозвратно удаляет ВСЕ ваши базы данных.

Перед удалением данных обязательно сделайте дамп всех баз:

# Создание резервной копии всех баз данных
sudo mysqldump --all-databases --single-transaction --routines --triggers > /root/all-databases-backup-$(date +%Y%m%d).sql

Только после этого можно удалять данные:

sudo rm -rf /var/lib/mysql /etc/mysql

8.4 Очистка логов (опционально)

После удаления пакетов могут остаться логи:

sudo rm -f /var/log/mysql/*.log

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

apt-cache policy mysql-community-server

Ожидаемый вывод: Installed: (none)

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

9.1 Ошибка GPG-ключа (NO_PUBKEY)

Симптом: apt update сообщает об отсутствии публичного ключа.

Решение: Переустановите официальный GPG-ключ:

sudo rm -f /usr/share/keyrings/mysql.gpg
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg
sudo apt update

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

Симптом:

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

Решение: Сервис MySQL не запущен:

sudo systemctl start mysql
sudo systemctl enable mysql

9.3 Сброс пароля root в MySQL 8.0+

⚠️ Примечание: В MySQL 8.0+ метод mysqld_safe --skip-grant-tables отключён по умолчанию. Используйте следующий безопасный способ.

Симптом: Вы забыли пароль root MySQL и не можете войти.

Решение:

Шаг 1: Остановите сервис MySQL:

sudo systemctl stop mysql

Шаг 2: Запустите MySQL в режиме инициализации без таблиц привилегий:

sudo mysqld --initialize-insecure --user=mysql

⚠️ Критическое предупреждение: --initialize-insecure выполняет инициализацию каталога данных и сбрасывает все учётные записи. Это не «сброс только root», а почти «переинициализация инстанса». Используйте только на тестовых машинах. На продакшене применяйте восстановление из резервной копии или используйте отдельные учётные данные.

Шаг 3: Запустите сервис нормально:

sudo systemctl start mysql

Шаг 4: Подключитесь без пароля и задайте новый:

sudo mysql -u root

Внутри MySQL:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'ВашНовыйПароль';
FLUSH PRIVILEGES;
EXIT;

Шаг 5: Проверьте вход с новым паролем:

mysql -u root -p

9.4 Ошибка аутентификации для старых приложений

Симптом: Ваше приложение (например, старая версия WordPress, PHP-скрипт) не может подключиться к MySQL 8.0. Ошибка содержит текст Authentication plugin 'caching_sha2_password' cannot be loaded.

Причина: MySQL 8.0 по умолчанию использует новый метод аутентификации caching_sha2_password, который не поддерживается старыми клиентами (например, PHP 7.x с драйвером mysqlnd).

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

Шаг 1: Проверьте текущий метод аутентификации для вашего пользователя:

sudo mysql -u root -p

Внутри MySQL:

SELECT user, host, plugin FROM mysql.user;

Шаг 2: Смените метод аутентификации для вашего пользователя на старый (mysql_native_password):

ALTER USER 'имя_пользователя'@'localhost' IDENTIFIED WITH mysql_native_password BY 'его_пароль';
FLUSH PRIVILEGES;
EXIT;

Пример для пользователя wordpress с паролем wp123:

ALTER USER 'wordpress'@'localhost' IDENTIFIED WITH mysql_native_password BY 'wp123';
FLUSH PRIVILEGES;
EXIT;

После этого ваше приложение сможет подключиться к MySQL 8.0.

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

  • [ ] MySQL установлен: apt-cache policy mysql-community-server показывает Installed:
  • [ ] Сервис активен: systemctl status mysql показывает active (running)
  • [ ] Скрипт безопасности выполнен: sudo mysql_secure_installation
  • [ ] Можете подключиться: mysql -u root -p открывает SQL-промпт
  • [ ] Можете создать базу данных: CREATE DATABASE testdb;
  • [ ] Сокет существует: ls -l /var/run/mysqld/mysqld.sock показывает файл
  • [ ] После перезагрузки сервера MySQL запускается автоматически: systemctl is-enabled mysql = enabled

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

Вопрос: Почему MySQL 8.0 не поддерживается на Debian 13?
Ответ: Oracle официально не предоставляет пакеты MySQL 8.0 для Debian 13 (Trixie). Рекомендуется использовать MySQL 8.4 LTS или MariaDB.

Вопрос: Когда заканчивается поддержка MySQL 8.0?
Ответ: MySQL 8.0 достигает конца жизненного цикла (EOL) в апреле 2026 года. Планируйте миграцию на MySQL 8.4 LTS или MariaDB.

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

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

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

Вопрос: Как быстро проверить, что MySQL может создавать базы?
Ответ: Выполните:

mysql -u root -p -e "CREATE DATABASE test_check; SHOW DATABASES;"

Если в списке есть test_check — всё работает. Удалить тестовую базу можно командой:

mysql -u root -p -e "DROP DATABASE test_check;"

Вопрос: Почему моё приложение не подключается к MySQL 8.0?
Ответ: Проверьте метод аутентификации пользователя. Старые приложения могут не поддерживать caching_sha2_password. Смените метод на mysql_native_password (см. раздел 9.4).

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

Заключение

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

Что дальше:

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