UMGUM.COM 

Reset MySQL root password ( Получение доступа к СУБД "MySQL/MariaDB" на уровне суперпользователя приложения. )

1 октября 2010  (обновлено 7 декабря 2020)

OS: Linux/*BSD.
Apps: MySQL/MariaDB.

Задача: получить доступ к СУБД "MySQL/MariaDB" на уровне суперпользователя приложения (не несущей операционной системы!), не пользуясь ничем, кроме встроенных средств.

Классический подход автоматизированной установки нового (или замены существующего) пароля суперпользователя "root" состоит в запуске СУБД с передачей ей специального "init-file", содержащего набор SQL-команд, исполняемых в контексте без каких-либо ограничений. Это удобно, но здесь мы рассмотрим другой, более ручной способ.


Последовательность дальнейших действий очень проста.

Останавливаем СУБД, доступ к которой требуется получить:

# systemctl stop mysql

Запускаем целевую СУБД в режиме отключения подсистемы ограничения прав доступа и без возможности обслуживания клиентских сетевых подключений:

# mkdir -p /var/run/mysqld
# chown -R mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables --skip-networking &

Подключаемся к целевой СУБД программным клиентом непосредственно с несущей операционной системы, через локальный "файловый сокет" (это делается по умолчанию, если не передавать клиенту параметры сетевого подключения) и серией следующих команд задаём желаемый пароль суперпользователю приложения:

# mysql -u root
mysql> use mysql;
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('strongRootPassword');
mysql> QUIT

Останавливаем СУБД, ранее временно запущенную в особом режиме:

# kill `cat /var/run/mysqld/mysqld.pid`

Запускаем СУБД в нормальном режиме:

# systemctl start mysql
# systemctl status mysql


Заметки и комментарии к публикации:


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