Spec-Zone.ru › MySQL 8.4

B.3.3.2 Как сбросить пароль root

  • B.3.3.2.1 Сброс пароля root: системы Windows
  • B.3.3.2.2 Сброс пароля root: системы Unix и Unix-подобные
  • B.3.3.2.3 Сброс пароля 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 с другим именем хоста, измените инструкции, используя это имя хоста.

  1. Войдите в систему как администратор.

  2. Остановите сервер MySQL, если он запущен. Для сервера, работающего как служба Windows, перейдите к диспетчеру служб: В меню Пуск выберите Панель управления, затем Админ. инструменты, затем Службы. Найдите службу MySQL в списке и остановите её.

    Если ваш сервер не работает как служба, возможно, потребуется использовать диспетчер задач, чтобы принудительно остановить его.

  3. Создайте текстовый файл, содержащий оператор назначения пароля в одной строке. Замените пароль на тот, который вы хотите использовать.

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
    
  4. Сохраните файл. В этом примере предполагается, что вы назвали файл C:\mysql-init.txt.

  5. Откройте окно консоли, чтобы перейти к командной строке: В меню Пуск выберите Выполнить, затем введите cmd в качестве команды для выполнения.

  6. Запустите сервер 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.

  7. После успешного запуска сервера удалите 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, либо удалить их.

  1. Войдите в систему как пользователь Unix, под которым работает сервер MySQL (например, mysql).

  2. Остановите сервер 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.

  3. Создайте текстовый файл, содержащий оператор назначения пароля в одной строке. Замените пароль на тот, который вы хотите использовать.

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
    
  4. Сохраните файл. В этом примере предполагается, что вы назвали файл /home/me/mysql-init. Файл содержит пароль, поэтому не сохраняйте его там, где он может быть прочитан другими пользователями. Если вы не вошли как пользователь mysql (пользователь, под которым работает сервер), убедитесь, что у файла есть разрешения, которые позволяют пользователю mysql его читать.

  5. Запустите сервер MySQL, установив системную переменную init_file для задания имени файла:

    $> mysqld --init-file=/home/me/mysql-init &
    

    Сервер выполняет содержимое файла, указанного системной переменной init_file при запуске, изменяя пароль учётной записи 'root'@'localhost'.

    Могут потребоваться и другие опции, в зависимости от того, как вы обычно запускаете свой сервер. Например, --defaults-file может потребоваться перед аргументом init_file.

  6. После успешного запуска сервера удалите /home/me/mysql-init.

Теперь вы сможете подключиться к серверу MySQL в качестве root с новым паролем. Остановите сервер и запустите его в обычном режиме.

B.3.3.2.3 Сброс пароля корневого пользователя: Общие инструкции

В предыдущих разделах приведены инструкции по сбросу пароля, специфичные для систем Windows и Unix/Unix-подобных систем. В качестве альтернативы, на любой платформе вы можете сбросить пароль, используя клиент mysql (но этот подход менее безопасен):

  1. Если необходимо, остановите сервер MySQL, затем перезапустите его с параметром --skip-grant-tables. Это позволяет любому пользователю подключаться без пароля и со всеми привилегиями, а также отключает операции управления учетными записями, такие как ALTER USER и SET PASSWORD. Поскольку это небезопасно, если сервер запущен с параметром --skip-grant-tables, он также отключает удалённые подключения, включив skip_networking. На платформах Windows это означает, что также необходимо включить shared_memory или named_pipe; в противном случае сервер не сможет запуститься.

  2. Подключитесь к серверу MySQL, используя клиент mysql; пароль не требуется, так как сервер был запущен с параметром --skip-grant-tables:

    $> mysql
    
  3. В клиенте 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/resetting-permissions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API