Как поменять забытый пароль root в MySQL/MariaDB?

Аватар пользователя admin

Иногда бывает, что вы забыли пароль root для MySQL или вам достался в администрирование сервер, владелец которого не помнит какой был пароль. Вам необходимо вернуть себе контроль над MySQL, т.е. либо сбросить либо поменять пароль root для MySQL. Ниже два способа как это можно сделать.

Обратите внимание, вам понадобятся права суперпользователя root в операционной системе (не путайте с root в MySQL), так ак все нижеперечисленные команды должны запускаться с правами суперпользователя.

Для MySQL8

С выходом версии MySQL Server 8, всё существенно поменялось. Теперь всё не так просто и придётся пройти несколько больше шагов:
 

1. Останавливаете MySQL Server, обычно командой:

systemctl stop mysqld

2. Авторизуетесь в системе как root и сразу же запускаете bash от пользователя mysql через sudo:

$ su -
Пароль:
[root@vitachi ~]# sudo -u mysql bash
$

3. Запусукаем MySQL Server с командной строки, с опцией --skip-grant-tables

$ mysqld --skip-grant-tables

При этом, MySQL Server запустится в особом режиме, без проверки прав доступа на подключение.

4. В ДРУГОЙ КОНСОЛИ (потому что эта уже будет занята), подключаетесь к MySQL Server'у:

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.35 MySQL Community Server - GPL

Copyright (c) 2000, 2023, 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>

5. Вводите команду:

mysql>  UPDATE mysql.user SET authentication_string=null WHERE User='root' AND Host='localhost';
mysql> exit

6. Далее находим запущенный нами процесс mysqld и прибиваем его:

# ps ax|grep mysql
...
   5113 pts/4    Sl+    0:02 mysqld --skip-grant-tables
...
# kill 5113

7. Запускаем MySQL Server обычным способом:

# systemctl strt mysqld

8. Тееперь в него можно зайти без пароля:

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.35

Copyright (c) 2000, 2023, 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>

9. И теперь уже можно поменять пароль на тот, который вам нравится с помощью тех операторов, которые вам нравятся, например:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '1KakoytoParol-';

Ниже описаны способы для более старых версий

1. С помощью init-файла

Создаём файл, например /root/mysql-init с содержимым:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('новый_пароль');

где вместо "новый_пароль" вы указываете желаемый пароль. Затем останавливаете MySQL/MariaDB сервер и запускаете команду:

mysqld_safe --init-file=/root/mysql-init &

Затем останавливаете MySQL/MariaDB, удаляете файл и запускаете MySQL/MariaDB обычным образом.

2. С помощью ключа --skip-grant-tables

Останавливаете MySQL/MariaDB. Запускаете команду

mysqld_safe --skip-grant-tables &


Далее команду:

mysql -u root -e "UPDATE mysql.user SET Password=PASSWORD('новый_пароль') WHERE User='root';"


И затем останавливаете MySQL/MariaDB и запускаете уже обычным образом.

0
Ваш рейтинг: Нет