MySQL5.7.8で導入された面倒なパスワードのポリシーを変更する

mysql_logo_large

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

英数字だけでパスワードが設定できない問題の原因と対処法

MySQL5.7.8以降で今まで通り、英数字のみでパスワードの設定を行うと下記のようにエラーが発生します。パスワードが安全ではない…とのエラーですが、本記事ではエラーの原因と回避策を確認していきます。

〇発生するエラー画面

 

エラーが発生する原因

エラーの原因は、MySQL5.6.6で導入された validate_password の機能が、MySQL5.7.8以降でデフォルトで有効化されました。それによりセキュリティポリシーとして弱いパスワードを設定しようとするとエラーが発生する…ということです。

〇MySQL5.7.8 のリリースノート(validate_password がデフォルトで導入された記述あり)
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-8.html

では MySQL にて validate_password の設定項目を確認した内容を記載します。

公式サイトの項目説明を見ながら SQL の結果を見ると

パスワードの長さ 8文字以上
英字 1文字以上
数字 1文字以上
記号 1文字以上

がデフォルトとして設定されているみたいです。

validate_password_policy の説明については、

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

となっています。

英語が苦手な人のために日本語訳も入れておきます。

LOW:パスワードの長さのみチェックする。
MEDIUM:パスワードの長さ、数字、大文字・小文字、記号をチェックする。
STRONG:パスワードの長さ、数字、大文字・小文字、記号、及び辞書ファイル(有名な名詞などを使用していないことを確認)をチェックする。

〇MySQL5.6.6 のリファレンス(validate_password の設定項目の説明)
https://dev.mysql.com/doc/refman/5.6/en/validate-password-options-variables.html#sysvar_validate_password_policy

 

エラーを解決する方法

では解消方法を確認してみます。

上記のようにパスワードポリシーに準拠するのは、対処法としては当たり前なので一旦置いておきます(汗)。

 

対処法1:一時的に制約を下げる
まずは公式サイトがおすすめしている対処方法として、SQL の「SET GLOBAL」命令で一時的に設定を変更するものがあります。

実際に打ち込む命令はこんな感じです。

上記の命令は、MySQL を再起動するまで有効になるので、需要としては事足りるかもしれませんね。

 

対処法2:パスワードポリシーの設定を変更する
2つ目の対応としては、パスワードポリシーの設定自体を変更する方法があります。

例えばポリシー自体を無効化するのであれば

[mysqld] validate-password=OFF

のように設定を OFF します。

チェック項目をパスワードの長さだけに変更するなら

[mysqld] validate_password_policy=LOW

と設定します。

また AWS にある RDS にて同じ設定を行うのであれば、パラメータグループから設定変更すれば対処できます。
password_simple_error_rds

 

さいごに

「validate_password_policy」は安易なパスワードを設定させないために導入された機能です。設定を変更する方法を紹介しましたが、データベースの安全を考慮するなら記号付きのパスワードを設定した方が良いのかなと思います。

 

 

ウェブプログラミングについては下記の本も参考になるので、スキルアップにお役立てください。

徳丸 浩(著)
ページ数: 688ページ
出版社:SBクリエイティブ
発売日:2018/06/21

出典:amazon