MySQLサーバーバージョン8.0.12でPASSWORD
関数を実行中にエラーが発生しました
次のクエリがあります。
SELECT *
FROM users
WHERE login = 'FABIO'
AND pwd = PASSWORD('2018')
LIMIT 0, 50000
このエラーが発生しています:
エラーコード:1064。SQL構文にエラーがあります。近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください
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サーバーチームの詳細については、 ここ を参照してください。
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 |
+------------------------------------------