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


84

Я пытаюсь обновить пароль для пользователя базы данных с помощью командной строки, и у меня это не работает. Это код, который я использую:

mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';

Может кто-нибудь сказать мне, что не так с этим кодом.


Какие шаги вы делаете? Просто вставить его не получится. Если я правильно помню, это процесс и этот код.
Идрис

Ах. Вы помните, как это делать?
user3310572 01

Это немного более подробно, и его должно быть легче понять. Innovativegotit.net/2007/05/17/…
Идрис

Ответы:


116

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

SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('cleartext password');

FLUSH PRIVILEGES;

Последняя строка важна, иначе изменение пароля, к сожалению, не вступит в силу.

РЕДАКТИРОВАТЬ:

Я провел тест у себя дома, и он сработал -

mysql>  set password for 'test' = PASSWORD('$w0rdf1sh');
Query OK, 0 rows affected (0.00 sec)

У меня версия 5. Вы можете использовать следующую команду, чтобы определить свою версию -

SHOW VARIABLES LIKE "%version%";

4
Когда я это делаю, он возвращает синтаксическую ошибку возле неожиданного токена ('
user3310572 01

1
Какую версию mysql вы используете? Я взял приведенный выше синтаксис из документации версии 5.0. Вы пробовали команду, которую я разместил?
hellboy 01

Я считаю, что использую версию 4.0, и да, я пробовал
user3310572 01

Команда хорошо работает для меня в MySQL версии 14.14, убедитесь, что пароль заключен в кавычки, а любые кавычки в пароле экранированы.
Snaver

1
Странно, но даже после 5.7.18-0ubuntu0.16.04.1
coding_idiot 07

37

Начиная с MySQL 5.7.6, используйте ALTER USER

Пример:

ALTER USER 'username' IDENTIFIED BY 'password';

Потому как:

  • SET PASSWORD ... = PASSWORD('auth_string') синтаксис устарел в MySQL 5.7.6 и будет удален в будущем выпуске MySQL.

  • SET PASSWORD ... = 'auth_string'синтаксис не является устаревшим, но ALTER USERтеперь является предпочтительным оператором для назначения паролей.


1
верно ли это даже для взаимодействия с MySQL через PHP?
oldboy 07

@Anthony, да, если ваша версия MySQL> = 5.7.6
Говинд Рай,

Я новичок в MySQL. что именно делает ALTER USER ... IDENTIFIED BY ...? чем это отличается от UPDATE ... SET ...или INSERT INTO ...?
oldboy 07

1
ALTER USER ... IDENTIFIED BY ...- это оператор SQL, который настраивает разрешения пользователей для вашей базы данных. UPDATEи INSERTимеют разные функции, которые, как и предполагают названия, обновляют записи и вставляют записи в таблицы в вашей базе данных.
Говинд Рай

2
выдает ошибку в mariaDbERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root' IDENTIFIED BY
Павел Ниедоба

14

Примечание: вы должны войти в систему как пользователь root

 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your password');


3

До MySQL 5.7.6 это работало из командной строки:

mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$w0rdf1sh');"

У меня нет установки mysql для тестирования, но я думаю, что в вашем случае это будет

mysql -e "UPDATE mysql.user SET Password=PASSWORD('$w0rdf1sh') WHERE User='tate256';"

2

В Windows 10 просто выйдите из текущего входа в систему и запустите это в командной строке

-> mysqladmin -u root password “newpassword”

где вместо root мог быть любой пользователь.




-1

Ваш корень входа в систему должен быть /usr/local/directadmin/conf/mysql.conf. Тогда попробуйте следовать

UPDATE mysql.user SET password=PASSWORD('$w0rdf1sh') WHERE user='tate256' AND Host='10.10.2.30';
FLUSH PRIVILEGES;

Хост - это ваш хост mysql.


1
Не работает. Возвращение синтаксической ошибки рядом с неожиданным токеном ('
user3310572 01
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.