Смена пароля 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')
и просто введите новый пароль в виде простого текста
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
Большое спасибо zetacu (и erich) за этот отличный ответ (после поиска в течение нескольких часов...)
Наслаждайтесь:-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');
или же
Терминал входит в каталог bin MySQL
компакт-диск /usr/локальные/mysql/bin
Откройте MySQL
mysql -u корень -p
В настоящее время вы можете использовать пароль по умолчанию
Выполняйте операции в MySQL в это время
показать базы данных;
Вам будет предложено сбросить пароль пользователя root.
Итак, как сбросить пароль root? Я проверил много информации, но это не подействовало.
В том числе входим для модификации БД в безопасном режиме, с помощью команды mysqladmin:
"
Mysqladmin -u root password"your-new-password"
" и т. д., работать не будет.
Правильные шаги следующие:
- Он до сих пор на диске
/usr/local/mysql/bin/
каталог -
sudo su
После входа вас попросят ввести пароль от вашего компьютера.
При входе ничего не отображается. После ввода нажмите Enter
Затем нажмите ввод
Пройдите проверку авторизации
sh-3.2# ./mysqld_safe --skip-grant-tables &
Если выполнение команды остановлено, а выполнение в это время завершено,
нажмите «Ввод» напрямую, а затем «Выход», чтобы выйти:
sh-3.2# exit
Повторно войдите в MySQL в это время, без параметра -p, без пароля
./mysql -u корень
Выберите базу данных MySQL (здесь MySQL относится к базе данных в MySQL,
в MySQL есть и другие базы, посмотреть можно через show databases;)
use mysql;
Обновите пароль пользователя 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.
sudo mysql --defaults-file=/etc/mysql/debian.cnf
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";