🐹 CentOS 7: Как сбросить или поменять пароль root MariaDB?

Содержание:

1. Постановка задачи.
2. Сброс пароля.
3. Оригиналы источников информации.


1. Постановка задачи.

Вы забыли ваш root-пароль от MariaDB?

Не беспокойтесь, есть простой способ сбросить ваш пароль менее чем за 5 минут!

Эта статья проведёт вас через процесс сброса пароля root вашей MariaDB на вашем сервере CentOS 7.

Внимание! Вам нужен root-доступ на ваш сервер, чтобы иметь возможность изменить пароль.

2. Сброс пароля.

2.1. Подготовка MariaDB к сбросу пароля.

Чтобы узнать версию программы, введите:

# mysql --version

Ответ:

Зайдите на ваш CentOS 7 сервер как root.

Остановите запущенный демон MariaDB:

# systemctl stop mariadb

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

Для этого нужно предотвратить загрузку таблиц привилегий, в которых хранятся данные о привилегиях пользователя. Такой метод доступа подвергает сервер опасности, потому очень важно запретить подключения сети и других клиентов.

Таблицы GRANT хранят пароли, следовательно, используя эту опцию вы можете войти в MariaDB без пароля:

# mysqld_safe --skip-grant-tables --skip-networking &

Ответ:

Теперь вы можете войти в MariaDB без пароля:

# mysql -u root

Когда вы вошли, вы можете сбросить ваш root пароль MariaDB, выполнив следующие SQL команды.

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

> FLUSH PRIVILEGES;

2.2. Немного технической информации.

Выбираем техническую таблицу:

> USE mysql;

Смотрим какие таблицы содержатся в базе данных:

> SHOW TABLES;

Ответ:

Смотрим содержимое таблицы user:

> DESCRIBE user;

Ответ:

Смотрим содержимое колонки User:

> SELECT User FROM user;

Ответ:

Смотрим содержимое колонки Password:

> SELECT Password FROM user;

Ответ:

Пароль в зашифрованном виде.

2.3. Изменение пароля.

Теперь можно изменить пароль root.

В MariaDB 10.1.20+ используйте команду:

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

Ответ:

Внимание! С версии MariaDB-10.4+ таблица mysql.user — это скорее представление, чем таблица изменить пароль с помощью UPDATE … SET не получится. Используйте SET PASSWORD или ALTER USER для управления аутентификацией пользователя.

В старых предыдущих версиях до MariaDB 10.1.20+ было вот так:

> UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

или

> UPDATE mysql.user SET Password=password('password') WHERE User='root';

Не забудьте заменить старый пароль вашим новым паролем.

В версиях до MariaDB 10.1.20 и более ранних версиях СУБД введите:

> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Вместо new_password укажите новый пароль пользователя root.

После обновления пароля на экране должен появиться такой вывод:

Query OK, 0 rows affected (0.00 sec)

Пароль успешно изменен, так что теперь можно перезапустить сервер базы данных.

Теперь очистите привилегии и выйдите из сервера MariaDB:

> FLUSH PRIVILEGES;
> exit;

Не всё так просто! Так как мы запускали сервер в аварийном режиме, то он не сможет стартануть традиционным способом в штатном режиме.

Придётся его припарковать руками по шаблону kill -9 '/var/run/mariadb/mariadb.pid':

# ps axu | grep mysql

Ответ:

Находим все PID и завершаем процессы:

# kill -9 2147

# kill -9 2228

Наконец, перезапустите ваш сервер MariaDB:

# systemctl restart mariadb

Сделано. Ваш старый пароль root MariaDB изменён и у вас новый пароль.

Теперь вы можете войти в MariaDB с новым паролем:

# mysql -uroot -p

Ответ:

Готово!

3. Оригиналы источников информации.

  1. codeby.net «Как сбросить пароль root MariaDB?»
  2. lyalyuev.info «Сброс пароля пользователя root в MySQL».
  3. 8host.com «Сброс пароля пользователя root в MySQL и MariaDB».