Смена пароля root в MySQL


Смена пароля root в MySQL выполняется при добавлении в конфигурационный файл директивы skip-grant-tables.

В материале рассмотрена смена пароля для версии MySQL 8, но те же инструкции будут работать с рядом других версий.


Директива добавляется в файл /etc/mysql/my.cnf или в другой файл определяющий блок [mysqld]

Далее перезапускаем службу

systemctl restart mysql


Появляется возможность попасть в базу без пароля

mysql
Смена пароля root в MySQL


Задаем пустой пароль

mysql> update mysql.user set authentication_string=('') where user='root';
mysql> FLUSH PRIVILEGES;


Убираем skip-grant-tables из конфигурационного файла. Вновь перезапускаем службу

systemctl restart mysql

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

mysql -u root -p


Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.27-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>

Оказавшись в консоли MySQL задаем пароль:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'VM2fiok8jHlxjfvfjkdQ5qIDRc';
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;


Готово. Смена пароля root в MySQL выполнена.

Чтобы пароль не запрашивался для пользователя root его можно прописать в файле /root/.my.cnf на сервере. Синтаксис файла такой:

[client]
user=root
password=mysqlpass

Файл считывается каждый раз при попытке авторизоваться в консоли MySQL без указания пользователя и пароля



Читайте про то как проверить версию сервера баз данных. Алгоритм смены пароля может быть другим для старых версий.

Сказать спасибо