単一のクエリを使用して、特定の1つの行を除いて、ユーザーテーブルのすべてのパスワードを暗号化(md5())するにはどうすればよいですか?
UPDATE table SET Password = MD5(Password)
MD5はあまり良いレベルの暗号化ではないので、カスタムソルトを使用したENCRYPTなどのより強力なものを検討する必要があります。それについて読む ここ
編集:元の質問が変更されたようです。これに対応するために変更されたクエリは次のとおりです
UPDATE table SET Password = MD5(Password) WHERE ID!=[specified index]
編集:注目に値する
MySQLデータベースにパスワードを保存するために使用するハッシュ関数はMD5よりもはるかに多くあります。
それらのリストは MySQL :: 11.10.2。暗号化および圧縮関数 にあります。
UPDATE users SET password = SHA('secret_password') WHERE ....;
SELECT COUNT(*) FROM users WHERE name = 'username' && password = SHA('typed_password');
結果が> 0の場合、ユーザーは正しいパスワードを入力しました。
編集に関して:この行を識別するIDまたはユーザー名はありますか?
UPDATE mytable
SET password = MD5(password)
WHERE id <> 123
パスワードをハッシュするときは、同じパスワードで同じハッシュが生成されないように、パスワードをソルトすることを忘れないでください。
SET @salt := CONV(FLOOR(Rand() * 0x100000000), 10, 16)
UPDATE passwords
SET password = CONCAT(@salt, SHA(CONCAT(@salt, @typed_password)))
SELECT 1
FROM passwords
WHERE SHA(CONCAT(SUBSTRING(password, 1, 8), @typed_password)) = SUBSTRING(password, 9, 40)
OPでの編集に応じて編集されました。
UPDATE userTable
SET password = MD5(password)
WHERE NOT (<criteria to identify row to exclude>)
もう少しアップデートだと思います
SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('newpass');
または
UPDATE user SET password = PASSWORD('newpass');
この助けを願っています