Получение доступа к базам данных является важной задачей при управлении серверами и обслуживании веб-приложений. Одной из самых распространенных и мощных систем управления базами данных (СУБД) является MySQL. Как администратор базы данных, вы храните важную информацию, и пароль root MySQL играет решающую роль в обеспечении безопасности и целостности данных.
Время от времени может возникнуть ситуация, когда вы теряете или забываете пароль root MySQL. Это может произойти по разным причинам, от непредвиденных обстоятельств до изменения команды или просто человеческой ошибки. В таких случаях критически важно знать, как сбросить пароль root и восстановить доступ к базе данных.
В данной статье мы представим вам методы и инструменты, которые помогут сбросить пароль root в MySQL и восстановить полный контроль над вашей базой данных. Мы охватим различные подходы, начиная от использования официальных инструментов MySQL, таких как mysqladmin и mysqld_safe, до редактирования файлов конфигурации и внесения изменений в систему.
Стоит отметить, что восстановление доступа к паролю root MySQL является сложной задачей и требует определенных знаний и навыков. Поэтому рекомендуем внимательно ознакомиться с инструкциями, чтобы избежать возможных проблем или потери данных.
Мы также обсудим важные меры предосторожности, которые помогут вам обеспечить безопасность вашей базы данных и предотвратить потерю пароля root в будущем. Это включает в себя использование надежных паролей, ограничение доступа к базе данных только необходимым пользователям и регулярное резервное копирование данных для минимизации рисков.
Итак, если вы столкнулись с проблемой утери пароля root в MySQL, не волнуйтесь. В статье ниже вы найдете подробные инструкции и рекомендации, которые помогут вам восстановить доступ и вернуться к управлению вашей базой данных MySQL.
MySQL не использует PAM и пароль от SSH не подойдёт. Пароль root задаётся в процессе установки сервера баз данных, на этапе формирования таблиц привилегий.
Если после попытки входа вместо приветствия база данных выдаёт ошибку ERROR 1045: Access denied for user 'root'@'localhost'
, значит нужно сбросить root-пароль.
Чтобы в MySQL 8 сбросить пароль root, необходимо пройти несложную процедуру. Она одинаково подходит как для традиционного MySQL, так и для MariaDB. Они полностью совместимы и имеют одинаковые команды.
В Ubuntu сбросить пароль root для MySQL можно такими же методами, как и в Debian, конкретной привязки к ОС нет. Небольшое отличие возможно для CentOS 7, это мы отметим ниже в соответствующем пункте.
Достаточно распространённый способ, ввиду его простоты. Приводим пошаговый план этой операции:
Остановим службу базы данных:
service mysqld stop
Запускаем службу без таблиц привилегий:
mysqld --skip-grant-tables&
Амперсанд в конце позволяет запустить службу в фоне и она не занимает отдельное окно терминала.
Подключаемся к серверу. Так как таблицы привилегий не подключены, соответственно пароль вводить нет необходимости:
mysql -u root
Каждая команда к базе данных обязательно должна заканчиваться точкой с запятой. Если запрос не отбит, MySQL будет ожидать продолжения команды. В новую строку можно просто указать точку с запятой, если она была упущена.
Подключаем таблицы привилегий:
FLUSH PRIVILEGES;
В ответ получаем: Query OK, 0 rows affected
.
Установим новый пароль суперпользователя root:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';
Если этот запрос не сработал, попробуйте:
UPDATE `mysql`.`user` SET `password`=password('ПАРОЛЬ') WHERE `user`='root';
Или:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ПАРОЛЬ');
На CentOS 7 сбросить пароль MySQL root можно, выполнив команду:
UPDATE `mysql`.`user` SET ` authentication_string`=password('ПАРОЛЬ') WHERE `user`='root';
Об успешности выполнения можно судить по ответу Query OK, 0 rows affected
. Пароль может быть даже пустым значением, но в таком случае будет потеряна возможность подключения к серверу любыми другими способами, кроме командной строки. Пароль изменяется сразу после ввода команды. Проверить можно, например, подключившись через phpMyAdmin, если не было передано пустое значение.
Выход из mysql:
quit;
В ответ получим Bye
, вернётся обычный терминал.
Запускаем сервер баз данных в штатном режиме:
service mysqld start
Сброс пароля суперпользователя MySQL под ОС Windows схож с процедурой сброса root-пароля СУБД для Linux-систем. Некоторые отличия могут быть только в процессе поиска и запуска службы самой базы данных. Из-за разных названий служб MySQL и MariaDB нет привязки к названию «mysql», и иногда необходимо указывать конкретное название службы. Рассмотрим пошагово сброс пароля суперпользователя базы данных для ОС Windows.
Открываем интерпретатор команд в режиме Администратора. В этом случае есть разница, какая база данных установлена, в Windows службы имеют различные названия. Проверяем, какая установлена:
Для MySQL:
sc qc "mysql"
Для MariaDB:
sc qc "mariadb"
В случае, если служба отсутствует, будет показано сообщение «Указанная служба не установлена». При успешном выполнении будет выведена основная служебная информация.
Если не установлена переменная %PATH%
, необходимо перейти в папку с исполняемым файлом службы базы данных, путь можно определить по ответу sc qc
в «Имя_двоичного_файла». В нашем случае это С:\localhost\mariadb\bin\
.
cd C:\localhost\mariadb\bin\
Если диск другой, то переходим на него, указав букву диска, например:
D:
Остановим уже запущенную службу:
Для MySQL:
net stop mysql
Для MariaDB:
net stop mariadb
Откроем окно дополнительного интерпретатора командой start
. В отличие от Linux, в Windows амперсанд в конце команды не работает, а при запуске службы она не даст более вводить команды до окончания сессии (нажатии CTRL+C).
Запуск сервера без привилегий (идентично для MySQL и MariaDB):
mysqld --skip-grant-tables
Во втором окне вводим:
mysql -u root -p
Вводим пустой пароль, видим стандартное приветствие. Теперь необходимо вводить команды для сервера баз данных.
Для начала необходимо выполнить команду:
FLUSH PRIVILEGES;
Без этой начальной команды можно получить ошибку при смене пароля: «ERROR 1290: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement».
Выполняем команду:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';
Примечание: если команда не сработала, попробуйте варианты из пятого шага инструкции для Linux-систем.
Закрываем окно интерпретатора с запущенной временной версией базы данных или нажимаем CTRL+C.
Запускаем системную службу:
Для MySQL:
net start mysql
Для MariaDB:
net start mariadb
Восстановление доступа к паролю root в MySQL является важным навыком для администраторов баз данных. В данной статье мы рассмотрели различные методы и инструменты, которые помогут вам сбросить пароль root и восстановить полный контроль над вашей базой данных.
В заключение, хочется подчеркнуть несколько ключевых моментов, касающихся безопасности баз данных.
Восстановление пароля root в MySQL — это важная задача, требующая внимания и знаний. Однако с помощью изученных методов и рекомендаций, вы сможете справиться с этой задачей и вернуть полный контроль над вашей базой данных MySQL. Помните об обеспечении безопасности, создании резервных копий и постоянном обучении, и ваша работа с MySQL будет успешной и безопасной.