Смена пароля root в MySQL

Я пытался сбросить мой корневой пароль MySQL. Я запустил mysqld_safe --skip-grant-tables, обновил пароль root и проверил таблицу пользователей, чтобы убедиться, что она там есть. После перезапуска демона mysql я попытался войти в систему с новым паролем root, который я только что установил, и по-прежнему получаю отказ в доступе из-за ошибок пользователя root. Я также попытался полностью удалить и переустановить MySQL (в том числе удаление файла my.cnf) и до сих пор не повезло. У кого-нибудь есть предложения по поводу того, что я могу сделать дальше?

заранее спасибо

32 ответа

Решение

Нашел это! Я забыл хешировать пароль, когда менял его. Я использовал этот запрос, чтобы решить мою проблему:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

Я забыл PASSWORD('NEW PASSWORD') и просто введите новый пароль в виде простого текста

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Вы можете найти Сброс корневого пароля в документации MySQL.

Посмотрите на это из справочного руководства по MySQL:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

Посмотрите эту страницу для получения дополнительной информации: Сброс пароля root: Unix Systems

Пожалуйста, следуйте инструкциям ниже.

шаг 1. остановить MySQL

шаг 2. sudo mysqld_safe --skip-grant-tables

шаг 3.mysql -u root

step4.use mysql;

step5.show tables;

step6.describe user;

step7.update user set authentication_string=password('1111') where user='root';

войти с паролем 1111

Это обновленный ответ для WAMP v3.0.6 и выше

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

>FLUSH PRIVILEGES;

В версии MySQL 5.7.x больше нет поля пароля в таблице mysql. Он был заменен строкой authentication_string.

Я тоже искал и, возможно, некоторые ответы подходят для некоторых ситуаций,

моя ситуация Mysql 5.7 в системе Ubuntu 18.04.2 LTS:

(получить права root)

$ sudo bash

(установить пароль для пользователя root db + реализовать меры безопасности по шагам)

# mysql_secure_installation

(дать доступ пользователю root вместо пароля)

(+ edit: очевидно, вам нужно снова установить пароль?)

(не устанавливайте это в 'mySecretPassword'!!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Большое спасибо zetacuerich) за этот отличный ответ (после поиска в течение нескольких часов...)

Наслаждайтесь:-D

С.

В MySQL 8 вам нужно указать метод хеширования пароля:

      ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new-password';

В MySQL 8.0.4+

Чтобы обновить текущего пользователя root:

select current_user();
set password = 'new_password';

Чтобы обновить другого пользователя:

set password for 'otherUser'@'localhost' = 'new_password';

Чтобы установить политику паролей перед обновлением пароля:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Другой / лучший способ обновить пароль root:

mysql_secure_installation

Хотите придерживаться аутентификации 5.x, чтобы по-прежнему использовать устаревшие приложения?

На my.cnf

default_authentication_plugin = mysql_native_password

Чтобы обновить root:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

Для MySQL 5.7.6 и более поздних версий:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Для MySQL 5.7.5 и более ранних версий:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Это сработало для меня -

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html

Для меня только эти шаги могли помочь мне установить пароль root в версии 8.0.19:

      mysql
SELECT user,authentication_string FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
FLUSH PRIVILEGES;
SELECT user,authentication_string FROM mysql.user;

Если вы видите изменения для пользователя root, значит, все работает. Источник: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server

Обновление от 2022 года

Я пробовал несколько ответов, но для меня работает следующее

      ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Предоставлено StrongDM

Примечание. Я использую клиент MySql для Windows 10, и я также регистрируюсь как rootпользователь.

Использование утилиты командной строки mysqladmin для изменения пароля MySQL:

mysqladmin --user=root --password=oldpassword password "newpassword"

Источник

Вы должны сбросить пароль! шаги для Mac OSX (проверено и работает) и Ubuntu

Стоп MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop

Запустите его в безопасном режиме:

$ sudo mysqld_safe --skip-grant-tables

(над строкой целая команда)

Это будет текущая команда до завершения процесса, поэтому откройте другое окно оболочки / терминала и войдите без пароля:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Запустите MySQL

sudo /usr/local/mysql/support-files/mysql.server start

Ваш новый пароль - "пароль".

В текущей последней версии MySQL (8.0.16) ни один из этих ответов не работал для меня.

Посмотрев несколько разных ответов и объединив их вместе, я использовал то, что сработало:

update user set authentication_string='test' where user='root';

Надеюсь это поможет.


Это для пользователей Mac.


Обновление: в версии 8.0.15 (возможно, уже до этой версии) функция ПАРОЛЬ () не работает.

Убедитесь, что вы сначала остановили MySQL (см. Выше). Запустите сервер в безопасном режиме с обходом привилегий:

sudo mysqld_safe --skip-grant-tables

замените этот mysqld_safe на свой путь к MySQL, как в моем случае это было

sudo / usr / local / mysql / bin / mysqld_safe –skip-grant-tables

то вам необходимо выполнить следующие шаги.

mysql -u корень

ОБНОВЛЕНИЕ mysql.user SET authentication_string =null WHERE User='root';

ПРИВИЛЕГИИ ПРОМЫВКИ;

выход;

потом

mysql -u корень

ALTER USER 'root'@'localhost' ИДЕНТИФИЦИРОВАН caching_sha2_password BY'yourpasswd';

Теперь просто используйте:

      SET PASSWORD FOR <user> = '<plaintext_password>'

Потому что 'SET PASSWORD FOR <user> = PASSWORD('<plaintext_password>')'устарела и будет удалена в будущем выпуске (предупреждение от 12 апреля 2021 г.)

Пожалуйста, используйте SET PASSWORD FOR <user> = '<plaintext_password>'вместо.

Обновление от 12.04.2021, 2:22:07 UTC/GMT -5 часов.

Используйте следующий оператор для изменения непосредственно в командной строке mysql:

      mysql> SET PASSWORD FOR'root'@'localhost' = PASSWORD('newpass');

или же

  1. Терминал входит в каталог bin MySQL

    компакт-диск /usr/локальные/mysql/bin

  2. Откройте MySQL

    mysql -u корень -p

  3. В настоящее время вы можете использовать пароль по умолчанию

  4. Выполняйте операции в MySQL в это время

    показать базы данных;

  5. Вам будет предложено сбросить пароль пользователя root.

Итак, как сбросить пароль root? Я проверил много информации, но это не подействовало.

В том числе входим для модификации БД в безопасном режиме, с помощью команды mysqladmin:

" Mysqladmin -u root password"your-new-password"" и т. д., работать не будет.

Правильные шаги следующие:

  1. Он до сих пор на диске /usr/local/mysql/bin/каталог
  2. sudo su

После входа вас попросят ввести пароль от вашего компьютера.

При входе ничего не отображается. После ввода нажмите Enter

Затем нажмите ввод

  1. Пройдите проверку авторизации

    sh-3.2# ./mysqld_safe --skip-grant-tables &

Если выполнение команды остановлено, а выполнение в это время завершено,

нажмите «Ввод» напрямую, а затем «Выход», чтобы выйти:

      sh-3.2# exit
  1. Повторно войдите в MySQL в это время, без параметра -p, без пароля

    ./mysql -u корень

  2. Выберите базу данных MySQL (здесь MySQL относится к базе данных в MySQL,

в MySQL есть и другие базы, посмотреть можно через show databases;)

      use mysql;
  1. Обновите пароль пользователя root в таблице базы данных:

    обновить набор пользователей authentication_string='123456', где User='root';

Примечание. Поле пароля здесь authentication_string,

не passwordраспространены в Интернете.

Предполагается, что MySQL был обновлен позже.

Повторно войдите в MySQL и используйте только что установленный пароль. Все в порядке?

Поскольку вы только что установили обход аутентификации авторизации,

вы можете войти в MySQL напрямую без пароля.

Мой глупый способ - перезагрузить компьютер и снова войти в MySQL с паролем, чтобы увидеть, эффективна ли модификация;

Пробовал ответ от @kta, но у меня не получилось.

Я использую MySQL 8.0

Это сработало для меня:

MySQL> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'

Так много комментариев, но мне помог этот метод:

sudo mysqladmin -u root password 'my password'

В моем случае после установки я получил сервис mysql без пароля для пользователя root, и мне нужно было установить пароль для моей безопасности.

Частая ошибка, с которой я сталкиваюсь время от времени, - то, что я забываю -p вариант, так что вы уверены, что использовали:

mysql -u root -p

В MySQL 5.7 пароль заменяется на "authentication_string".

использование

update user set authentication_string=password('myfavpassword') where user='root';

Например, вы можете изменить пароль пользователя с помощью ALTER USER или SET PASSWORD , как показано ниже. *Возможно, вам необходимо войти в систему под пользователем:

      ALTER USER 'root'@'localhost' IDENTIFIED BY 'apple';

Или:

      SET PASSWORD FOR 'root'@'localhost' = 'apple';

*Не используйте команду ниже, чтобы изменить пароль пользователя наappleпотому что пароль не работает для входа в MySQL под пользователем. Наконец, вам необходимо сбросить пароль, следуя документу :

      UPDATE mysql.user SET authentication_string='apple' WHERE User='root';
FLUSH PRIVILEGES;

И вы можете отключить пароль пользователя с помощью''как показано ниже:

      ALTER USER 'root'@'localhost' IDENTIFIED BY '';

Или:

      SET PASSWORD FOR 'root'@'localhost' = '';

Затем вы можете войти в систему без пароля, как показано ниже. *Доктор говоритMYSQL_PWD is deprecated as of MySQL 8.0; expect it to be removed in a future version of MySQL.и мой ответ объясняет, как войти в MySQL без запроса пароля:

      mysql -u root

Или:


Или:

      mysql -u root --password=''

Или:

      MYSQL_PWD='' mysql -u root

Кроме того, вы можете войти в систему без пароля для запроса пароля, как показано ниже:

      mysql -u root -p
Enter password:

Или:

      mysql -u root --password
Enter password:

Или:

      MYSQL_PWD='' mysql -u root -p
Enter password:

Или:

      MYSQL_PWD='' mysql -u root --password
Enter password:

Или в Windows вы можете установить пользователяrootи нет пароля, как показано ниже. *Мой ответ объясняет[client]и мой ответ объясняет, где находится в Windows, и мой ответ объясняет, как войти в систему с помощью:

      # "my.ini"

[client]
user="root"
password=""

Или:

      # "my.ini"

[client]
user="root"
# password=""

Затем вы можете войти в систему, установив местоположение или, как показано ниже:

      mysql --defaults-file='C:\ProgramData\MySQL\MySQL Server 8.0\my.ini'

Или:

      mysql --defaults-extra-file='C:\ProgramData\MySQL\MySQL Server 8.0\my.ini'

*Не устанавливаетсяmy.iniместонахождение--defaults-file=или--defaults-extra-file=получите ошибку, как показано ниже:

      mysql
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)

В Mysql 8 используйте mysql_native_password.

ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ 'root'@'localhost', ИДЕНТИФИЦИРОВАННОГО С помощью mysql_native_password ПО 'new_password';

Сброс пароля root.

  1. sudo mysql --defaults-file=/etc/mysql/debian.cnf

  2. alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

Или просто используйте интерактивную настройку:

sudo mysql_secure_installation

Остановите все службы Wamp, выход из Wamp.

откройте блокнот, затем введите> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');

затем сохраните его на диск c: с любым именем.. как этот "c:/example.txt"

Теперь перейдите к вашему "wamp" фалдеру wamp > bin > mysql > mysql(ваша версия) > bin в моем случае путь "C:\wamp\bin\mysql\mysql5.6.17\bin"

Теперь скопируйте ваш путь, затем запустите cmd с помощью (ctrl + r), затем введите "cmd" (введите)

введите cd, затем щелкните правой кнопкой мыши на cmd и вставьте путь (введите), теперь введите (mysqld --init-file=C:\example.txt) без фигурных скобок затем (введите)

затем перезагрузите компьютер или откройте taskmgr и убейте mysqld.exe

запустите wamp и ваш пароль будет удален...

Для пользователей MacOS, если вы забудете свой пароль root, ответ @ Таким образом, ответ @ thanharaK ( /questions/6069824/smena-parolya-root-v-mysql/6069836#6069836) хорош, но есть еще несколько хитростей:

Если вы используете системные настройки для запуска MySQL на сервере, просто

sudo mysqld_safe --skip-grant-tables

может не сработать для вас.

Вы должны убедиться, что аргументы командной строки совпадают с конфигурацией запуска системы.

Следующая команда работает для меня:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Ты можешь использовать

ps aux | grep mysql

проверить свой.

Другие ответы мне не помогли.

Тем не менее, вот как я это сделал для смены пароля к корневому профилю SQL, если вы уже можете войти в систему.

Во время входа в систему:

Панель инструментов -> Серверы -> Пользователи и привилегии -> выберите root -> отсюда вы можете изменить пароль или срок его действия и изменить его при входе в систему.

Вы можете выполнить: ALTER USER "root"@"localhost" IDENTIFIED BY "test_pwd";

Другие вопросы по тегам