Spec-Zone.ru › MySQL 5.7

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

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

  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 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.

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

  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 с новым паролем. Остановите сервер и перезапустите его обычным способом.

Если оператор ALTER USER не сбрасывает пароль, попробуйте повторить процедуру, используя следующие операторы для непосредственного изменения таблицы user:

UPDATE mysql.user
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
END_OF_DOCUMENT_MARKER
B.3.3.2.3 Сброс пароля root: общие инструкции

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

  1. При необходимости остановите сервер MySQL, затем перезапустите его с параметром --skip-grant-tables. Это позволит любому подключаться без пароля и со всеми привилегиями, а также отключит операторы управления учетными записями, такие как ALTER USER и SET PASSWORD. Поскольку это небезопасно, вы можете использовать --skip-grant-tables в сочетании с включением системной переменной skip_networking, чтобы предотвратить подключение удалённых клиентов. На платформах Windows, если вы включите skip_networking, вам также необходимо включить 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).

Если оператор 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/resetting-permissions.html

Spec-Zone.ru

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