правильный синтаксис для установки пароля с помощью командной строки mysql 5.5.8 - PullRequest
6 голосов
/ 20 сентября 2011

Я только что скачал и установил WAMPserver 2.1, и я хочу установить пароль для базы данных MySQL 5.5.8.Я делаю учебное пособие на lynda.com и инструкции для учителя (Кевина Скоглунда), чтобы набрать:

mysql> use mysql
Database changed

mysql> UPDATE user
    -> SET Password = PASSWORD('paSSword')
    -> WHERE user = 'root';

Когда я нажимаю клавишу ввода, я получаю эту ошибку об операторе WHERE:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual
  that corresponds to your MySQL server version for the right syntax to use
  near 'WHERE' user='root'; at line 2

Кто-нибудь знает правильный синтаксис для оператора WHERE?Его уроки были сделаны в 2007 году, поэтому я думаю, что синтаксис изменился, потому что он работал на него в видеоЭта строка была возвращена для него:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1  Warnings: 0
mysql>

Спасибо

Ответы [ 5 ]

9 голосов
/ 20 сентября 2011

Это работает на моем тестовом сервере:

mysql> UPDATE user SET password=PASSWORD('newpassword') WHERE user ='root';
mysql> Query OK

Вы пытаетесь установить пароль вместо пароля (в нижнем регистре)

Shai.

2 голосов
/ 20 января 2013

У меня была та же проблема с тем же учебником lynda.com. Решение:

UPDATE mysql.user SET Password=PASSWORD('cleartext password')
WHERE User='root';
FLUSH PRIVILEGES;
1 голос
/ 20 мая 2013

У меня была точно такая же проблема, проблема была решена следующим образом:

ОБНОВЛЕНИЕ mysql.user SET Password = ПАРОЛЬ ('YourPassword') ГДЕ Пользователь = 'root';

ПРИМЕЧАНИЕ. Проблема заключалась в том, что я добавил в программу <> (угловые скобки) вместо () (круглые скобки), я знаю, это звучит очень глупо, но это то, что произошло. Поскольку () и <> выглядят одинаково в командной строке, я их испортил.

0 голосов
/ 01 августа 2017

Войдите в MySQL как пользователь root, затем

SET PASSWORD FOR 'user-name-here'@'hostname-name-here' = PASSWORD('new-password-here');

Для реального сценария

SET PASSWORD FOR 'user_test'@'localhost' = PASSWORD('hello');
0 голосов
/ 20 сентября 2011

Этот код:

UPDATE user SET password=PASSWORD('newpassword') WHERE user ='root';

Скомпилирует (из-за отсутствия лучшего слова) , но очень небезопасный код:

Вот что говорится в руководстве MySQLо нем:

Примечание
Функция PASSWORD () используется системой аутентификации в MySQL Server;Вы должны не использовать его в своих собственных приложениях.Для этого рассмотрим MD5 () или SHA1 ().Также см. RFC 2195, раздел 2 (Механизм проверки подлинности с ответом на запрос (CRAM)), для получения дополнительной информации о безопасной обработке паролей и аутентификации в ваших приложениях.

Если вы настаиваете на хранении паролей в вашей базе данных,вы всегда должны солить их и использовать безопасный хеш.
MD5 и SHA1 больше не безопасны.В 2005 году (!) Брюс Шейер, ведущий эксперт по этой теме, сказал: "It's time for us all to migrate away from SHA-1."
Я предлагаю использовать SHA2 с длиной хэша 512 бит.

$user = mysql_real_escape_string($_POST['user']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$oldpassword = mysql_real_escape_string($_POST['oldpassword']);

if not(empty($password1) and ($password1 == $password2) {
  $update = "UPDATE user 
  SET passhash = SHA2(CONCAT(id,'$password1'),512) 
  WHERE user = '$user' AND passhash = SHA2(CONCAT(id,'$oldpassword'),512)";

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

Соль должна храниться в той же строке, что и пароль, но не должна быть секретной.
Просто убедитесь, что вы добавили ее к паролю.

Проверка пароля работает следующим образом:

SELECT * FROM user 
WHERE username = 'root' 
  AND passhash = SHA2(CONCAT(id,'passwordexample'),512)
...