Поиск по сайту:

Как сбросить пароль root в MySQL 8 в Ubuntu Linux


Вы забыли пароль пользователя root для базы данных MySQL? Не беспокойся! В этом пошаговом руководстве объясняется, как сбросить пароль root в MySQL 8 в операционной системе Ubuntu 20.04.

Примечание. Как вы, возможно, уже знаете, пользователь root MySQL использует плагин auth_socket для аутентификации на сервере MySQL в системах Ubuntu, работающих под управлением MySQL 5.7 и более поздних версий. Таким образом, вы можете войти на сервер MySQL как пользователь root с помощью команды sudo mysql, если вы знаете пароль sudo пользователя вашей системы. В этом случае нет необходимости менять пароль root MySQL. Если вы уже изменили метод аутентификации для root-пользователя MySQL на caching_sha2_password или mysql_native_password, выполните следующие шаги, чтобы сбросить root. пароль базы данных MySQL.

Сброс пароля root в MySQL 8 в Ubuntu Linux

1. Сначала остановите службу MySQL с помощью команды:

sudo systemctl stop mysql

Это остановит службу MySQL, если она запущена. Вы можете проверить статус службы MySQL с помощью команды:

sudo systemctl status mysql

Пример вывода:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Mon 2021-05-31 11:01:15 UTC; 1min 15s ago
     Process: 1446 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 1446 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 31 07:57:50 ubunt4.localdomain systemd[1]: Starting MySQL Community Server…
 May 31 07:57:51 ubunt4.localdomain systemd[1]: Started MySQL Community Server.
 May 31 11:01:14 ubunt4.localdomain systemd[1]: Stopping MySQL Community Server…
 May 31 11:01:15 ubunt4.localdomain systemd[1]: mysql.service: Succeeded.
 May 31 11:01:15 ubunt4.localdomain systemd[1]: Stopped MySQL Community Server.

Остановить службу MySQL

2. Затем запустите сервер MySQL без проверки разрешений. Для этого запустите:

sudo systemctl edit mysql

Откроется файл конфигурации mysql systemd, ваш текстовый редактор по умолчанию. В моем случае это редактор nano.

Добавьте в него следующие строки:

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

Редактировать файл конфигурации mysql systemd

После добавления вышеуказанных строк нажмите CTRL+O и ENTER, чтобы сохранить файл, а затем нажмите CTRL+X, чтобы закрыть его.

Здесь опция --skip-grant-tables позволяет вам подключиться к серверу базы данных MySQL без пароля и со всеми привилегиями. Также будут отключены операторы управления учетными записями, такие как ALTER USER и SET PASSWORD. А опция --skip-networking используется для предотвращения подключения других клиентов к серверу базы данных. Поскольку он отключает все удаленные подключения, ни один из удаленных клиентов не сможет получить доступ к серверу базы данных, пока вы не перезапустите сервер базы данных в обычном режиме.

3. Перезагрузите конфигурацию systemd с помощью команды:

sudo systemctl daemon-reload

4. Запустите службу MySQL:

sudo systemctl start mysql

Это запустит сервер MySQL с опциями --skip-grant-table и --skip-networking. Вы можете убедиться в этом, проверив статус службы MySQL:

sudo systemctl status mysql
 ● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Drop-In: /etc/systemd/system/mysql.service.d
              └─override.conf
      Active: active (running) since Mon 2021-05-31 11:39:18 UTC; 1min 23s ago
     Process: 1882 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Main PID: 1905 (mysqld)
      Status: "Server is operational"
       Tasks: 36 (limit: 2280)
      Memory: 331.0M
      CGroup: /system.slice/mysql.service
              └─1905 /usr/sbin/mysqld --skip-grant-tables --skip-networking
 May 31 11:39:16 ubunt4.localdomain systemd[1]: Starting MySQL Community Server…
 May 31 11:39:18 ubunt4.localdomain systemd[1]: Started MySQL Community Server.

5. Теперь подключитесь к серверу MySQL как пользователь root без пароля:

sudo mysql -u root

Вы сразу же попадете в командную строку MySQL.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

6. Мы вошли на сервер базы данных, не загружая таблицы грантов (потому что мы использовали опцию --skip-grant-tables). Поэтому мы не можем использовать команду ALTER USER, которая необходима для сброса пароля. Чтобы загрузить таблицы грантов, выполните следующую команду из командной строки MySQL:

mysql> FLUSH PRIVILEGES;

7. Затем выполните любую из следующих команд, чтобы сбросить пароль root MySQL.

Если вы используете плагин caching_sha2_password, запустите:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Сброс пароля root в MySQL 8 в Ubuntu Linux

Если вы используете плагин mysql_native_password, запустите его:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';

Замените Password123#@! на свой собственный.

После изменения пароля MySQL root выйдите из командной строки MySQL:

mysql> exit

8. Верните измененную конфигурацию systemd к нормальным настройкам с помощью команды:

sudo systemctl revert mysql

Это приведет к удалению всех измененных файлов.

Removed /etc/systemd/system/mysql.service.d/override.conf.
Removed /etc/systemd/system/mysql.service.d.

9. Перезагрузите конфигурацию systemd, чтобы изменения вступили в силу:

sudo systemctl daemon-reload

10. Наконец, перезапустите сервер MySQL в обычном режиме:

sudo systemctl restart mysql

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

mysql -u root -p

Введите пароль root для доступа к командной строке MySQL:

mysql> 

Существует также другой способ изменить пароль MySQL root в Linux. Он немного отличается от этого метода. Если вам интересно узнать, перейдите по следующей ссылке:

>> How To Reset MySQL Root User Password In Linux

Заключение

Как видите, сбросить пароль root MySQL очень просто! Если вы внимательно выполнили описанные выше шаги, вы сможете восстановить корневой пароль базы данных MySQL за пару минут. Не теряй его снова. Запомните или сохраните свой пароль в надежном месте.