web-dev-qa-db-ja.com

MySQL SERVER 8.0でPASSWORD関数が機能しない

MySQLサーバーバージョン8.0.12でPASSWORD関数を実行中にエラーが発生しました

次のクエリがあります。

SELECT * 
FROM users 
WHERE login = 'FABIO' 
  AND pwd = PASSWORD('2018') 
LIMIT 0, 50000

このエラーが発生しています:

エラーコード:1064。SQL構文にエラーがあります。近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

4
Fabio C

OPのMySQLサーバーのバージョンは8.0.12です。 MySQL Documentation から、 [〜#〜] password [〜#〜]バージョン> 5.7.5

注意

このセクションの情報は、MySQL 5.7.5より前でのみ、およびmysql_native_passwordまたはmysql_old_password認証プラグインを使用するアカウントにのみ適用されます。 MySQL 5.7.5では、4.1より前のパスワードハッシュのサポートが削除されました。これには、mysql_old_password認証プラグインとOLD_PASSWORD()関数の削除が含まれます。また、secure_authを無効にしたり、old_passwordsを1に設定したりすることはできません。

MySQL 5.7.5以降では、4.1パスワードハッシュとmysql_native_password認証プラグインに関する情報のみが引き続き関連します。

代わりに、PASSWORD関数の代わりに、 here のはるかに優れた安全な暗号化関数を使用できます。 MySQLサーバーチームの詳細については、 ここ を参照してください。

5
Madhur Bhaiya

Password()関数と一致する置換ハッシュが必要な場合は、次を使用します。SHA1(UNHEX(SHA1()));例えば。

mysql> SELECT PASSWORD('mypass');
+-------------------------------------------+
| PASSWORD('mypass')                        |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+

そしてバージョン8で同じ答えを与える置換:

mysql> SELECT UPPER(SHA1(UNHEX(SHA1('mypass'))));
+------------------------------------------+
| UPPER(SHA1(UNHEX(SHA1('mypass'))))       |
+------------------------------------------+
| 6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+------------------------------------------
1
rayzinnz