Установка 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 года. 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 — пакет с корневыми сертификатами для проверки 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. 🚀 Способ 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-ключ с сервера ключей Ubuntu
  • gpg --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 во время установки

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

  1. Root password — введите надёжный пароль для пользователя root MySQL
  2. Confirm password — подтвердите пароль
  3. 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.

Решение:

  1. Остановите сервис MySQL:
sudo systemctl stop mysql
  1. Запустите MySQL в безопасном режиме (без проверки паролей):
sudo mysqld_safe --skip-grant-tables &

Что делает: Запускает MySQL, пропуская таблицы привилегий (пароли не проверяются).

  1. Подключитесь к MySQL без пароля:
sudo mysql -u root
  1. Теперь вы внутри MySQL (приглашение mysql>). Выполните следующие SQL-команды:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ВашНовыйПароль';
EXIT;

Что делает:

  • FLUSH PRIVILEGES; — перезагружает таблицы привилегий
  • ALTER USER ... — устанавливает новый пароль для root (замените ВашНовыйПароль на свой)
  • EXIT; — выходит из MySQL
  1. Остановите безопасный режим MySQL:
sudo killall mysqld
  1. Запустите MySQL нормально:
sudo systemctl start mysql
  1. Проверьте вход с новым паролем:
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).

Пошаговая инструкция:

  1. Войдите в MySQL как root:
sudo mysql -u root -p
  1. Внутри 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;
  1. После этого ваше приложение сможет подключиться к 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *