B.3.3.2 Как сбросить пароль root
Если вы никогда не задавали root пароль для MySQL, сервер вообще не требует пароля для подключения в качестве root. Однако это небезопасно. Инструкции по назначению пароля см. в разделе 2.9.4, «Обеспечение безопасности начального учётной записи MySQL».
Если вы знаете root пароль и хотите его изменить, см. раздел 15.7.1.1, «Оператор ALTER USER» и раздел 15.7.1.10, «Оператор 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 8.4\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 8.4\\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. Если вы запускаете сервер вручную, используйте ту команду, которую вы обычно используете.
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 с новым паролем. Остановите сервер и запустите его в обычном режиме.
B.3.3.2.3 Сброс пароля корневого пользователя: Общие инструкции
В предыдущих разделах приведены инструкции по сбросу пароля, специфичные для систем Windows и Unix/Unix-подобных систем. В качестве альтернативы, на любой платформе вы можете сбросить пароль, используя клиент mysql (но этот подход менее безопасен):
Если необходимо, остановите сервер MySQL, затем перезапустите его с параметром
--skip-grant-tables. Это позволяет любому пользователю подключаться без пароля и со всеми привилегиями, а также отключает операции управления учетными записями, такие какALTER USERиSET PASSWORD. Поскольку это небезопасно, если сервер запущен с параметром--skip-grant-tables, он также отключает удалённые подключения, включивskip_networking. На платформах Windows это означает, что также необходимо включить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).
© 2025 Oracle
Licensed under the GPLv2 License.