Змініть пароль користувача MySQL за допомогою командного рядка


84

Я намагаюся оновити пароль для користувача бази даних за допомогою командного рядка, і це не працює для мене. Це код, який я використовую:

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

Хтось може сказати мені, що не так з цим кодом.


Ну які кроки ви виконуєте? Просто вкласти його не вийде. Якщо я правильно пам’ятаю, це процес і цей код.
Ідріс

Ага. Ви пам’ятаєте процес, як це зробити?
user3310572

Це трохи більш докладно і повинні бути більш легше зрозуміти innovativethought.net/2007/05/17 / ...
Ідріс

Відповіді:


115

У своєму коді спробуйте вкласти пароль всередині однієї лапки. Як варіант, згідно з документацією 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

1
Яку версію mysql ви використовуєте? Я взяв вищезазначений синтаксис із документації версії 5.0. Ви спробували команду, яку я опублікував?
hellboy

Я вважаю, що я використовую версію 4.0, і так, я спробував
user3310572

Команда добре працює для мене в MySQL Ver 14.14, переконайтесь, що пароль обгорнуто лапками, а всі лапки в паролі захищені.
Snaver

1
Дивно, але навіть після змиву, все ще не працює для мене :-( Я використовую Mysql5.7.18-0ubuntu0.16.04.1
coding_idiot

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

@Anthony так, якщо ваша версія MySQL>> = 5.7.6
Govind Rai

я новачок у MySQL. що робить ALTER USER ... IDENTIFIED BY ...саме? чим це відрізняється від UPDATE ... SET ...або INSERT INTO ...?
oldboy

1
ALTER USER ... IDENTIFIED BY ...- це оператор SQL, який налаштовує дозволи користувача для вашої бази даних. UPDATEі INSERTмають різні функціональні можливості, які, як імена, пропонують, оновлюють записи та вставляють записи до таблиць у вашій базі даних.
Govind Rai

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
Павло Нієдоба



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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.