Перейти к основному контенту

Как сбросить root-пароль в MySQL

Облачные серверы с Ubuntu

Заказывайте Облачный сервер с чистой ОС или стеком LAMP/LEMP. Почасовая оплата, первый платёж — 100 рублей.

Заказать

Если вы забыли или потеряли пароль от сервера баз данных, его можно сбросить. Для этого вам понадобится root-доступ к серверу по SSH. Инструкция подойдёт для следующих версий ПО:

  • MySQL 8.0 и более ранние версии;
  • Ubuntu 16.04, 18.04, 20.04.

В статье мы расскажем, как в MySQL сбросить пароль root.

В более поздних дистрибутивах к MySQL можно подключиться без ввода пароля. Такую возможность даёт плагин auth_socket. Доступ без пароля зависит от того, какой пользователь ОС подключается к MySQL. По умолчанию доступ имеет только root-пользователь.

Чтобы проверить, какой у вас доступ, подключитесь к серверу и выполните команду:

mysql

Если настроен доступ без пароля, на экране вы увидите примерно следующее:

Подключение к MySQL без пароля

Если на MySQL настроен доступ по паролю, вы столкнётесь с ошибкой:

Ошибка при подключении к базе данных через терминал Доступ для пользователя root без использования пароля запрещён

Если доступ без пароля не настроен, а пароль утерян, воспользуйтесь нашей инструкцией.

Как сбросить root-пароль MySQL

Чтобы выполнить сброс пароля MySQL, подключитесь к вашему серверу по SSH и следуйте инструкции:

  1. 1.

    Откройте файл параметров MySQL командой:

    nano /etc/mysql/my.cnf
  2. 2.

    Добавьте в конец файла три параметра:

    [mysqld]
    
    skip-grant-tables
    
    skip-networking

    Конфигурационный файл MySQL - my.cnf MySQL reset root password

    Если директива [mysqld] уже прописана в файле, добавьте только skip-grant-tables и skip-networking:

    • skip-grant-tables — параметр, который пропускает проверку прав. Это позволит подключиться к MySQL без пароля любому пользователю.
    • skip-networking — параметр, который запретит удалённые подключения к серверу БД на время сброса пароля.
  3. 3.
    Чтобы сохранить изменения, нажмите CTRL+S. Затем закройте редактор сочетанием клавиш CTRL+X.
  4. 4.

    Чтобы запустить MySQL с нужными параметрами, перезапустите сервер БД командой:

    systemctl restart mysql.service
  5. 5.

    Подключитесь к серверу баз данных при помощи команды:

    mysql
  6. 6.

    Перезагрузите привилегии:

    FLUSH PRIVILEGES;
  7. 7.

    Поменяйте пароль при помощи команды:

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

    Вместо password введите свой новый пароль.

    Если при выполнении команды возникнет ошибка неправильного синтаксиса, попробуйте другую команду:

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');

    Если возникнет ошибка «ERROR 1290 (HY000): The MySQL server is running with the —skip-grant-tables option so it cannot execute this statement», выполните команду из 6 шага.

  8. 8.

    Откройте конфигурационный файл:

    nano /etc/mysql/my.cnf
  9. 9.

    Удалите из файла текст, который добавили во втором шаге:

    [mysqld]
    
    skip-grant-tables
    
    skip-networking

    Если на 2 шаге вы добавили только параметры skip-grant-tables и skip-networking, удалите только их.

    Обратите внимание!
    Обязательно удалите опцию skip-grant-tables из конфигурационного файла после смены пароля. Если не удалить параметр, после перезапуска сервера баз данных подключаться к MySQL можно будет без пароля от имени любого пользователя.
  10. 10.
    Чтобы сохранить изменения, нажмите CTRL+S. Затем закройте редактор сочетанием клавиш CTRL+X.
  11. 11.

    Подключитесь к серверу баз данных:

    mysql -uroot -p’password’

    Вместо password напишите ваш новый пароль.

Готово, вы сбросили пароль от root-пользователя MySQL.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 1