B.3.3.2 Как сбросить пароль root
Если вы никогда не задавали пароль для MySQL, сервер вообще не требует пароля для подключения как root. Однако это небезопасно. Инструкции по установке пароля см. в разделе 2.9.4, «Обеспечение безопасности начального учетной записи MySQL».
Если вы знаете пароль root и хотите его изменить, см. раздел 13.7.1.1, «Выполнение ALTER USER» и раздел 13.7.1.7, «Выполнение SET PASSWORD».
Если вы ранее задали пароль root, но забыли его, вы можете задать новый пароль. В следующих разделах приведены инструкции для систем Windows и Unix/Unix-подобных систем, а также общие инструкции, которые применимы к любой системе.
B.3.3.2.1 Сброс пароля root: системы Windows
В Windows для сброса пароля учетной записи MySQL 'root'@'localhost' используйте следующую процедуру. Для изменения пароля учетной записи root с другим именем хоста измените инструкции, используя это имя хоста.
Войдите в систему как администратор.
-
Остановите сервер MySQL, если он запущен. Для сервера, работающего в качестве службы Windows, перейдите в диспетчер служб: в меню выберите , затем , затем . Найдите службу MySQL в списке и остановите ее.
Если сервер не работает как служба, возможно, вам потребуется использовать диспетчер задач, чтобы принудительно его остановить.
-
Создайте текстовый файл, содержащий оператор задания пароля в одной строке. Замените пароль на тот, который вы хотите использовать.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Сохраните файл. В этом примере предполагается, что вы назвали файл
C:\mysql-init.txt.Откройте окно консоли, чтобы перейти к командной строке: в меню выберите , затем введите cmd в качестве команды для выполнения.
-
Запустите сервер MySQL, установив системную переменную
init_fileдля указания имени файла (обратите внимание, что обратная косая черта в значении параметра удваивается):C:\>
cd "C:\Program Files\MySQL\MySQL Server 5.7\bin"C:\>mysqld --init-file=C:\\mysql-init.txtЕсли MySQL установлен в другое место, соответствующим образом скорректируйте команду cd.
Сервер выполняет содержимое файла, указанного системной переменной
init_file, при запуске, изменяя пароль учетной записи'root'@'localhost'.Чтобы вывод сервера отображался в окне консоли, а не в файле журнала, добавьте параметр
--consoleк команде mysqld.Если MySQL был установлен с помощью мастера установки MySQL, вам может потребоваться указать параметр
--defaults-file. Например:C:\>
mysqld--defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 5.7\\my.ini"--init-file=C:\\mysql-init.txtСоответствующее значение параметра
--defaults-fileможно найти в диспетчере служб: в меню выберите , затем , затем . Найдите службу MySQL в списке, щелкните ее правой кнопкой мыши и выберите параметрProperties. ПолеPath to executableсодержит значение параметра--defaults-file. После успешного запуска сервера удалите
C:\mysql-init.txt.
Теперь вы сможете подключиться к серверу MySQL как root с новым паролем. Остановите сервер MySQL и перезапустите его обычным способом. Если сервер работает как служба, запустите его из окна «Службы Windows». Если вы запускаете сервер вручную, используйте ту команду, которую вы обычно используете.
Если оператор ALTER USER не сбрасывает пароль, попробуйте повторить процедуру, используя следующие операторы для непосредственного изменения таблицы user:
UPDATE mysql.user
SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
B.3.3.2.2 Сброс пароля root: системы Unix и Unix-подобные системы
В Unix для сброса пароля учетной записи MySQL 'root'@'localhost' используйте следующую процедуру. Для изменения пароля учетной записи root с другим именем хоста измените инструкции, используя это имя хоста.
Инструкции предполагают, что вы запускаете сервер MySQL из учетной записи пользователя Unix, которую вы обычно используете для его запуска. Например, если вы запускаете сервер с использованием учетной записи пользователя mysql, вы должны войти как mysql, прежде чем использовать инструкции. Вы также можете войти как root, но в этом случае вы обязательно должны запустить mysqld с параметром --user=mysql. Если вы запускаете сервер как root без использования --user=mysql, сервер может создавать файлы, принадлежащие пользователю root, в каталоге данных, такие как файлы журналов, и это может вызвать проблемы с правами доступа при будущих запусках сервера. Если это произойдет, вам нужно либо изменить права владельца файлов на mysql, либо удалить их.
Войдите в систему как пользователь Unix, от имени которого работает сервер MySQL (например,
mysql).-
Остановите сервер MySQL, если он запущен. Найдите файл
.pid, содержащий идентификатор процесса сервера. Точное расположение и имя этого файла зависят от вашей дистрибуции, имени хоста и конфигурации. Распространённые расположения —/var/lib/mysql/,/var/run/mysqld/и/usr/local/mysql/data/. Как правило, имя файла имеет расширение.pidи начинается либо сmysqld, либо с имени хоста вашей системы.Остановите сервер MySQL, отправив нормальный
kill(неkill -9) процессу mysqld. Используйте фактическое имя файла.pidв следующей команде:$>
kill `cat /mysql-data-directory/host_name.pid`Используйте обратные кавычки (не прямые кавычки) с командой
cat. Это приводит к подстановке вывода командыcatв командуkill. -
Создайте текстовый файл, содержащий оператор задания пароля в одной строке. Замените пароль на тот, который вы хотите использовать.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Сохраните файл. В этом примере предполагается, что вы назвали файл
/home/me/mysql-init. Файл содержит пароль, поэтому не сохраняйте его там, где к нему могут получить доступ другие пользователи. Если вы вошли не какmysql(пользователь, от имени которого работает сервер), убедитесь, что файл имеет разрешения, позволяющиеmysqlего прочитать.-
Запустите сервер MySQL, установив системную переменную
init_fileдля указания имени файла:$>
mysqld --init-file=/home/me/mysql-init &Сервер выполняет содержимое файла, указанного системной переменной
init_file, при запуске, изменяя пароль учетной записи'root'@'localhost'.Возможно, также потребуются другие параметры, в зависимости от того, как вы обычно запускаете сервер. Например,
--defaults-fileможет потребоваться перед аргументомinit_file. После успешного запуска сервера удалите
/home/me/mysql-init.
Теперь вы сможете подключиться к серверу MySQL как root с новым паролем. Остановите сервер и перезапустите его обычным способом.
Если оператор ALTER USER не сбрасывает пароль, попробуйте повторить процедуру, используя следующие операторы для непосредственного изменения таблицы user:
UPDATE mysql.user
SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
B.3.3.2.3 Сброс пароля root: общие инструкции
В предыдущих разделах представлены инструкции по сбросу пароля, специфичные для Windows и Unix-подобных систем. В качестве альтернативы, на любой платформе вы можете сбросить пароль с помощью клиента mysql (но этот подход менее безопасен):
При необходимости остановите сервер MySQL, затем перезапустите его с параметром
--skip-grant-tables. Это позволит любому подключаться без пароля и со всеми привилегиями, а также отключит операторы управления учетными записями, такие какALTER USERиSET PASSWORD. Поскольку это небезопасно, вы можете использовать--skip-grant-tablesв сочетании с включением системной переменнойskip_networking, чтобы предотвратить подключение удалённых клиентов. На платформах Windows, если вы включитеskip_networking, вам также необходимо включитьshared_memoryилиnamed_pipe; в противном случае сервер не сможет запуститься.-
Подключитесь к серверу MySQL с помощью клиента mysql; пароль не нужен, потому что сервер был запущен с параметром
--skip-grant-tables:$>
mysql -
В клиенте
mysqlукажите серверу перезагрузить таблицы разрешений, чтобы операторы управления учетными записями работали:mysql>
FLUSH PRIVILEGES;Затем измените пароль учетной записи
'root'@'localhost'. Замените пароль на тот, который вы хотите использовать. Чтобы изменить пароль для учетной записиrootс другим именем хоста, измените инструкции, используя это имя хоста.mysql>
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Теперь вы должны иметь возможность подключиться к серверу MySQL как к учетной записи root с новым паролем. Остановите сервер и перезапустите его в обычном режиме (без параметра --skip-grant-tables и без включения системной переменной skip_networking).
Если оператор ALTER USER не удаётся сбросить пароль, повторите процедуру, используя следующие операторы для непосредственного изменения таблицы user:
UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
© 2025 Oracle
Licensed under the GPLv2 License.