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— пакет с корневыми сертификатами для проверки HTTPScurl— утилита для скачивания файлов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-ключ с сайта MySQLgpg --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 — введите надёжный пароль для пользователя
rootMySQL - 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).
Связанные статьи:
- Установка MariaDB на Debian
- Как добавить пользователя в sudoers в Debian 13, 12, 11: полное руководство
Заключение
Вы успешно установили MySQL 8.0 на Debian 12 или 11. Теперь у вас есть полноценная система управления базами данных от Oracle. Вы выполнили начальную настройку безопасности, научились управлять сервисом и можете подключаться к базе данных из командной строки.
Что дальше:
- Настройте базу данных для вашего приложения (WordPress, Laravel, Nextcloud)
- Изучите официальную документацию MySQL
- Установите phpMyAdmin для веб-интерфейса
- Настройте резервное копирование баз данных с помощью
mysqldump - Для работы с MySQL из PHP установите
php-mysql