😽
MySQLで怒られる。 create user "user_name"@"localhost" identified by ...
MySQLでデータベースを作成して、grant previledge
をしようとしたら、怒られた話。
grant previledgeでは、ユーザー( user )に対して指定の種類の権限( priv_type )を指定のレベル( priv_level )で設定します。複数の権限をまとめて設定する場合はカンマ(,)で区切って続けて記述。
ユーザー権限を指定できる。
実行したいもの
実行したいもの
mysql> grant all priviledge on [database_name].* to 'username'@'localhost' identified by 'password';
エラー文
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
日本語訳: 「パスワードが現在のポリシー要件を満たしていない」
と言われた。
MySQLのパスワードポリシーについて
コマンド行形式 | --validate-password-policy=value |
---|---|
システム変数 | validate_password_policy |
スコープ | グローバル |
動的 | はい |
SET_VARヒントの適用 | いいえ |
型 | 列挙 |
デフォルト値 | 1 |
有効な値 | 0 / 1 / 2 |
- 0 または LOW : 長さ
- 1 または MEDIUM : 長さ; 数字、小文字/大文字、および特殊文字
- 2 または STRONG : 長さ; 数字、小文字/大文字、および特殊文字。辞書ファイル
確認してみる
show global variables like '%validate%';
で、mysqlにおけるバリデーションを一覧で見れる。この中に validate_password_policy
があるので、それをLOWにすることで、上の長さだけにできるので、簡単に書き換えができる。
mysql
mysql> $show global variables like '%validate%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| query_cache_wlock_invalidate | OFF |
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
書き換える
LOWに書き換える時はset
を使って、変えることができる
mysql
mysql> $set global validate_password_policy=LOW;
-> Query OK, 0 rows affected (0.00 sec)
再度、確認してみる
mysql
mysql> show global variables like '%validate%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| query_cache_wlock_invalidate | OFF |
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
LOWに変わりましたね(下から2行目)。これで、行うおうとしていたコマンドができるようになります。
実行したかったコマンド
行おうとしたコマンド
mysql> grant all priviledge on [database_name].* to 'username'@'localhost' identified by 'password';
-> Query OK, 0 rows affected, 1 warning (0.01 sec)
これで行けるはず。
ちなみに。他のもの。
パスワードの文字の長さなども変えられる。
// 10文字以上
mysql> set global validate_password_length=10;
他にもこれらがある。
バリデーション名 | 簡単な内容 | デフォルトの値 |
---|---|---|
validate_password_check_user_name | パスワードにユーザー名の一部が含まれていないか | 無効 |
validate_password_dictionary_file | 除外する文字列を定義したファイルを設定できる | 未指定 |
validate_password_length | パスワードに必要な最小の文字数 | 8文字 |
validate_password_mixed_case_count | パスワードに必要な小文字および大文字の最大数。 パスワードポリシーが MEDIUM以上で有効 | 1文字(有効) |
validate_password_number_count | パスワードに必要な数値文字 (数字) の最大数。パスワードポリシーがMEDIUM以上で有効 | 1文字(有効) |
validate_password_policy | パスワードポリシー | MEDIUM |
validate_password_special_char_count | スワードに必要な英数字以外の文字の最大数。パスワードポリシーが MEDIUM以上で有効 | 1文字(有効) |
何か個人開発とかでセキュリティ関係なく、試したい時にはいろいろ変えてみると楽になる!(基本、policy変更だけでいいと思うけど笑)
Discussion