Восстановление root-пароля MySQL/MariaDB через Docker

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

dockermysqlmariadb

ℹ️ Если вы потеряли доступ к базе данных MySQL/MariaDB, но у вас есть доступ к файловой системе сервера, можно быстро сбросить root-пароль, используя временный контейнер Docker. Этот подход удобен, если вы не хотите вручную редактировать конфигурации или перезапускать службу базы данных.

  1. 🐳 1. Создайте временный Docker-контейнер с вашей версией MySQL/MariaDB

    Укажите путь к директории, где находится база данных:

    docker run --rm -v /path/to/mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3307:3306 mysql:5.7

    ℹ️ Замените /path/to/mysql на реальный путь к вашим данным, а mysql:5.7 на версию вашего сервера.

  2. 📂 2. Подключитесь к контейнеру через клиент MySQL:

    mysql -h 127.0.0.1 -P 3307 -u root
  3. 👨‍💻 3. Сбросьте root-пароль:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

    FLUSH PRIVILEGES;

  4. 4. Остановите контейнер

    Просто завершите работу Docker-контейнера с помощью Ctrl+C. Все изменения сохранятся, поскольку данные хранятся на хосте.

  5. 🔥 5. Проверьте доступ к базе

    Теперь вы можете подключиться к базе на хосте с новым паролем:

    mysql -u root -p

✳️ Дополнительные возможности

Можно временно запустить базу в безопасном режиме (--skip-grant-tables) через контейнер для более сложных операций восстановления:

docker run --rm -v /path/to/mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 --skip-grant-tables

tags: #полезно #docker #mysql

🧭 @recura_tech

Иллюстрация в векторном стиле: контейнер Docker рядом с ёмкостями базы данных с подписью MySQL, на фоне светлого круга изображён дельфин.
Иконографическое изображение Docker и базы MySQL.

Читайте так же