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

84

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

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

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

user3310572
источник
Какие шаги вы делаете? Просто вставить его не получится. Если я правильно помню, это процесс и этот код.
Идрис
Ах. Вы помните, как это делать?
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');
Виджей Кумар
источник
6

это обновленный ответ для WAMP v3.0.6

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

FLUSH PRIVILEGES;
Роберт Энтони С. Трибиана
источник
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

У меня это работает. Получил решение с веб-страницы MYSQL

В MySQL выполните следующие запросы:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New_Password';
Кирти Никам
источник
0

Начиная с MySQL 8.0.18 Это отлично работает для меня

mysql> SET PASSWORD FOR 'user'@'localhost' = 'userpassword';

микоман
источник
-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.

user353gre3
источник
1
Не работает. Возвращение синтаксической ошибки рядом с неожиданным токеном ('
user3310572 01