LoginSignup
9
3

More than 5 years have passed since last update.

MySQLのGRANTコマンドでパスワードを設定するときの「PASSWORD」について

Posted at

概要

  • なんとなくコピペで使っていた、MySQLのユーザを作るときのコマンドの「IDENTIFIED BY」の箇所について
  • 「PASSWORD」という文字列を付ける/付けないで挙動が変わるのを知らず、
  • エラーに苦しんでいた

環境

  • MySQL 5.5/5.6

実行したSQL

mysql> GRANT USAGE ON *.* TO 'arnold'@'%' IDENTIFIED BY PASSWORD 'dbpass';

エラー

  • MySQL 5.6
ERROR 1827 (HY000): The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.
  • MySQL 5.5
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

原因

  • 下記のMySQLドキュメントに書いてありました。
  • ユーザのパスワードを設定する部分「IDENTIFIED BY PASSWORD」について、「PASSWORD」を付けると、パスワード文字列をハッシュ化した後の文字列を指定する。
  • 「PASSWORD」を付けないと平文でのパスワード文字列を指定する。

MySQLのドキュメント

CREATE USER または GRANT では、
PASSWORD() でパスワードに返されるハッシュ値がわかっている場合に、
平文パスワードの送信を回避できます。
前にキーワード PASSWORD を付けたハッシュ値を指定します

おまけ

  • パスワードのハッシュ化した文字列
mysql> SELECT PASSWORD('dbpass');
+-------------------------------------------+
| PASSWORD('dbpass')                        |
+-------------------------------------------+
| *9FB2126F7514B6AF42B20E9E4B8E839B72E31396 |
+-------------------------------------------+
1 row in set (0.00 sec)
9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3