MySQL 8.0 — это широко используемая реляционная система управления базами данных (СУБД), которая работает везде: от небольших веб-приложений на WordPress до крупных хранилищ данных для электронной коммерции. MySQL обеспечивает производительность и надёжность, необходимые для хранения данных ваших приложений.
💡 В Debian по умолчанию используется MariaDB (по причинам лицензирования), но вы можете установить официальный MySQL 8.0 от Oracle. В этом руководстве мы добавим официальный APT-репозиторий Oracle, установим MySQL 8.0, выполним начальную настройку безопасности и научимся управлять сервисом.
⚠️ Важно: MySQL 8.0 достигает конца жизненного цикла (EOL) в апреле 2026 года. Oracle предоставляет пакеты для Debian 12 и 11, но Debian 13 (Trixie) официально не поддерживается (пользователям Debian 13 рекомендуется устанавливать MySQL 8.4 LTS или MariaDB).
В этой статье вы узнаете:
- Как установить MySQL 8.0 через официальный репозиторий Oracle (рекомендуемый способ)
- Как установить MySQL 8.0 через утилиту
extrepo(с обходным решением для GPG-ключа) - Как выполнить начальную настройку безопасности (пароль root, удаление анонимных пользователей)
- Как управлять сервисом MySQL
- Как обновлять и удалять MySQL
- Как решить типичные проблемы (GPG-ключи, сброс пароля root)
Для кого: разработчики, администраторы серверов (WordPress, Laravel), пользователи Debian 12 и 11 (Debian 13 не поддерживается).
1. 🔧 Предварительные требования
Перед установкой убедитесь, что:
- У вас установлена Debian 12 (Bookworm) или Debian 11 (Bullseye) — Debian 13 не поддерживается
- Подключение к интернету стабильно
- У вас есть хотя бы 1 ГБ свободного места (для базы данных потребуется больше)
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo
Обновление системы
Перед установкой всегда обновляйте список пакетов:
sudo apt update && sudo apt upgrade -y
Что делает:
sudo— права суперпользователяapt update— обновляет список доступных пакетов&&— выполняет следующую команду только если предыдущая успешнаapt upgrade -y— обновляет все установленные пакеты,-yавтоматически подтверждает
Зачем: Это стандартная практика безопасности перед установкой нового ПО.
Установка вспомогательных пакетов
sudo apt install ca-certificates curl gpg lsb-release -y
Что делает:
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. 🚀 Способ 1: Ручная настройка репозитория (рекомендуемый)
Этот метод даёт полный контроль над репозиторием и работает без обходных путей.
3.1 Импорт GPG-ключа MySQL
curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB7B3B788A8D3785C' | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg
Что делает:
curl -fsSL— скачивает GPG-ключ с сервера ключей Ubuntugpg --dearmor— преобразует ключ из текстового формата в бинарный-o /usr/share/keyrings/mysql.gpg— сохраняет ключ в стандартную директорию
Зачем: Бинарный формат ключа требуется для корректной работы APT с опцией Signed-By.
3.2 Создание конфигурации репозитория
sudo tee /etc/apt/sources.list.d/mysql.sources > /dev/null <<EOF
Types: deb
URIs: http://repo.mysql.com/apt/debian
Suites: $(lsb_release -cs)
Components: mysql-8.0
Architectures: $(dpkg --print-architecture)
Signed-By: /usr/share/keyrings/mysql.gpg
EOF
Что делает:
$(lsb_release -cs)— автоматически подставляет кодовое имя вашей Debian (bookwormилиbullseye)$(dpkg --print-architecture)— подставляет архитектуру (amd64,arm64и т.д.)
Зачем: Формат .sources является современным стандартом Debian и обеспечивает явную привязку ключа к репозиторию.
3.3 Обновление списка пакетов и установка MySQL
sudo apt update
sudo apt install mysql-community-server -y
Что делает: Устанавливает MySQL Community Server из репозитория Oracle.
3.4 Настройка пароля root во время установки
Во время установки появится окно с запросом:
- Root password — введите надёжный пароль для пользователя
rootMySQL - Confirm password — подтвердите пароль
- Authentication plugin — выберите
caching_sha2_password(рекомендуется для новых приложений)
💡 Навигация: Используйте клавишу Tab для перемещения между полями, Enter для подтверждения.
4. 📦 Способ 2: Установка через extrepo (альтернативный)
Утилита extrepo — официальный инструмент Debian для управления сторонними репозиториями. Однако в текущей версии есть проблема с GPG-ключом, требующая обходного пути.
4.1 Установка extrepo и включение политики non-free
sudo apt install extrepo -y
sudo sed -i 's/# - non-free/- non-free/' /etc/extrepo/config.yaml
Что делает: Устанавливает extrepo и включает поддержку non-free репозиториев (MySQL — проприетарное ПО).
4.2 Добавление репозитория MySQL и исправление GPG-ключа
sudo extrepo enable mysql-8.0
Проблема: extrepo сохраняет ключ в формате ASCII с escape-последовательностями, что мешает APT.
Решение: Скачайте ключ заново и исправьте путь:
curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB7B3B788A8D3785C' | sudo gpg --dearmor -o /var/lib/extrepo/keys/mysql-8.0.gpg
sudo sed -i 's|mysql-8.0.asc|mysql-8.0.gpg|' /etc/apt/sources.list.d/extrepo_mysql-8.0.sources
sudo apt update
4.3 Установка MySQL
sudo apt install mysql-community-server -y
5. 🔍 Проверка установки
5.1 Проверка версии
apt-cache policy mysql-community-server
✅ Ожидаемый вывод для Debian 12:
mysql-community-server:
Installed: 8.0.45-1debian12
Candidate: 8.0.45-1debian12
5.2 Проверка статуса сервиса
systemctl status mysql
✅ Ожидаемый вывод:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled)
Active: active (running) since ...
5.3 Проверка подключения
mysql -u root -p
Введите пароль root, который вы задали при установке. При успешном подключении увидите приглашение MySQL:
mysql>
Введите exit для выхода.
6. 🔒 Настройка безопасности 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) | Применяет изменения |
7. 🛠️ Управление сервисом 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
8. 🔄 Обновление MySQL
MySQL обновляется через стандартные команды APT:
# Обновить только MySQL
sudo apt update
sudo apt install --only-upgrade mysql-community-server -y
# Или обновить всё
sudo apt update && sudo apt upgrade -y
9. ❌ Удаление MySQL
9.1 Остановка и удаление пакетов
sudo systemctl stop mysql
sudo apt remove --purge mysql-community-server mysql-community-client mysql-common -y
sudo apt autoremove -y
9.2 Удаление репозитория (для ручного метода)
sudo rm -f /etc/apt/sources.list.d/mysql.sources
sudo rm -f /usr/share/keyrings/mysql.gpg
sudo apt update
9.3 Удаление репозитория (для extrepo)
sudo extrepo disable mysql-8.0
sudo rm -f /etc/apt/sources.list.d/extrepo_mysql-8.0.sources /var/lib/extrepo/keys/mysql-8.0.*
sudo apt update
9.4 Удаление данных базы данных
⚠️ Внимание: Следующая команда безвозвратно удаляет ВСЕ ваши базы данных. Сделайте резервную копию, если нужно что-то сохранить.
sudo rm -rf /var/lib/mysql /etc/mysql
9.5 Проверка удаления
apt-cache policy mysql-community-server
✅ Ожидаемый вывод: Installed: (none)
10. ⚠️ Решение типичных проблем
10.1 Ошибка GPG-ключа (NO_PUBKEY)
Симптом: apt update сообщает об отсутствии публичного ключа.
Решение: Переустановите GPG-ключ:
curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB7B3B788A8D3785C' | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg
sudo apt update
10.2 Ошибка: Can’t connect to local MySQL server through socket
Симптом: ERROR 2002 (HY000): Can't connect to local MySQL server through socket
Решение: Сервис MySQL не запущен:
sudo systemctl start mysql
sudo systemctl enable mysql
10.3 Сброс пароля root (полная инструкция для новичков)
Симптом: Вы забыли пароль root MySQL и не можете войти командой mysql -u root -p.
Решение:
- Остановите сервис MySQL:
sudo systemctl stop mysql
- Запустите MySQL в безопасном режиме (без проверки паролей):
sudo mysqld_safe --skip-grant-tables &
Что делает: Запускает MySQL, пропуская таблицы привилегий (пароли не проверяются).
- Подключитесь к MySQL без пароля:
sudo mysql -u root
- Теперь вы внутри MySQL (приглашение
mysql>). Выполните следующие SQL-команды:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ВашНовыйПароль';
EXIT;
Что делает:
FLUSH PRIVILEGES;— перезагружает таблицы привилегийALTER USER ...— устанавливает новый пароль для root (заменитеВашНовыйПарольна свой)EXIT;— выходит из MySQL
- Остановите безопасный режим MySQL:
sudo killall mysqld
- Запустите MySQL нормально:
sudo systemctl start mysql
- Проверьте вход с новым паролем:
mysql -u root -p
Пример: Если вы хотите установить пароль mySecret123, команда будет:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mySecret123';
10.4 Ошибка аутентификации для старых приложений (полная инструкция)
Симптом: Ваше приложение (например, старая версия WordPress, PHP-скрипт) не может подключиться к MySQL 8.0. Ошибка содержит текст Authentication plugin 'caching_sha2_password' cannot be loaded.
Причина: MySQL 8.0 по умолчанию использует новый метод аутентификации caching_sha2_password, который не поддерживается старыми клиентами (например, PHP 7.x с драйвером mysqlnd).
Решение: Смените метод аутентификации для вашего пользователя на старый (mysql_native_password).
Пошаговая инструкция:
- Войдите в MySQL как root:
sudo mysql -u root -p
- Внутри MySQL (приглашение
mysql>) выполните команды:
ALTER USER 'имя_пользователя'@'localhost' IDENTIFIED WITH mysql_native_password BY 'его_пароль';
FLUSH PRIVILEGES;
EXIT;
Где:
имя_пользователя— замените на имя пользователя вашего приложения (например,wordpress)его_пароль— замените на пароль этого пользователя
Пример для пользователя wordpress с паролем wp123:
ALTER USER 'wordpress'@'localhost' IDENTIFIED WITH mysql_native_password BY 'wp123';
FLUSH PRIVILEGES;
EXIT;
- После этого ваше приложение сможет подключиться к MySQL 8.0.
Альтернатива (глобальное изменение по умолчанию):
Если вы только устанавливаете MySQL и знаете, что будете использовать старые приложения, можно изменить метод аутентификации по умолчанию ДО установки. Но проще сменить для конкретного пользователя, как описано выше.
11. 📝 Чек-лист: всё готово к работе
- [ ] MySQL установлен:
apt-cache policy mysql-community-serverпоказываетInstalled: - [ ] Сервис активен:
systemctl is-active mysqlвозвращаетactive - [ ] Скрипт безопасности выполнен:
sudo mysql_secure_installation - [ ] Можете подключиться:
mysql -u root -pоткрывает SQL-промпт - [ ] Можете создать базу данных:
CREATE DATABASE testdb; - [ ] После перезагрузки сервера MySQL запускается автоматически
Заключение
Вы успешно установили MySQL 8.0 на Debian 12 или 11. Теперь у вас есть полноценная система управления базами данных от Oracle. Вы выполнили начальную настройку безопасности, научились управлять сервисом и можете подключаться к базе данных из командной строки.
Что дальше:
- Настройте базу данных для вашего приложения (WordPress, Laravel, Nextcloud)
- Изучите официальную документацию MySQL
- Установите phpMyAdmin для веб-интерфейса
- Настройте резервное копирование баз данных с помощью
mysqldump - Для работы с MySQL из PHP установите
php-mysql