MySQL
mysql5.7

MySQL5.7でCREATE USERするときのパスワードチェックを無効にする方法

More than 1 year has passed since last update.

MySQL5.7で適当なパスワードでユーザーを作ろうとしようものなら容赦なく怒られた :frowning2:

$ mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

・・・こんな感じ :ghost:
このチェックを無効化にする方法を調べたのでメモ。

パスワードのチェックを無効化する

チェックを無効にしたければvalidate_passwordプラグインを無効にするといいらしい。
ということで、my.cnfにvalidate-password=OFFを追記。これだけ。

$ sudo vi /etc/my.cnf
/etc/my.cnf
[mysqld]
validate-password=OFF

設定反映のためmysqlの再起動。

$ sudo systemctl restart mysqld.service

以上であります。 :cop_tone1:
確認のため適当なパスワードでユーザーを作ってみる。

$ mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.00 sec)

いけました :thumbsup_tone2:

おまけ

上記の設定を無効にする前のMySQL5.7のデフォルトのチェック内容についても調べてみたのでメモ。
とりあえず以下で設定が見れる。

$ mysql> SHOW GLOBAL VARIABLES LIKE 'validate%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| 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      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

設定値 説明 デフォルト値
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文字(有効)

デフォルトはかなりガチガチ :angel_tone2:
validate_password_policy=LOWに設定すると、長さチェックだけになるみたい:writing_hand_tone2:

/etc/my.cnf
[mysqld]
validate_password_policy=LOW

参考:https://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html