Как сбросить пароль 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 за пару минут. Не теряй его снова. Запомните или сохраните свой пароль в надежном месте.