【MySQL5.7】アップデートしたら気をつけるべきパスワード関連の設定2つ

本題に入る前に…。MySQLをアップデート

まずはなにごとにもバックアップ

なにもMySQLで動かしていなければ大丈夫なのですが、そうでない場合、データ消えますよ。まるごとバックアップを取っておきましょう。

$ mysqldump -u USERNAME -p PASSWORD -h HOST -A > LOCAL_FILE

公式リポジトリをダウンロード

MySQL5.7 Yumリポジトリ一覧
お使いのOSにあったYumリポジトリをここからダウンロードして、5.7をインストールします。Yum以外のリポジトリもあります。自分の環境に応じて選んでください。

# yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
# yum install -y mysql-community-server

これでアップデートは完了!!本題のパスワード関連での必須の設定を行います。

1.パスワードの有効期限

パスワードの有効期限が決まっている!(v5.7.11未満)

5.7はパスワードの有効期限が決まっています。デフォルトでは360日で設定したパスワードは失効しログインできなくなります。めんどくさっ!!

ただ、期限を0日と指定すれば無効になり、パスワードの失効を防ぐことができます。
※注:どうやら5.7.11からはデフォルトで0日に変更されたそうです。

一応、設定しておきます。あとついでに他の設定も。

/etc/my.cnf

[mysqld]
# パスワードの有効期限を無期限に
default_password_lifetime = 0
# デフォルト文字コードをutf8にセット
character-set-server = utf8
# デフォルトで下記に設定されていますが一応
collation-server = utf8_general_ci
# 要求がどうであれ、↑で設定した文字コードで返すための設定
skip-character-set-client-handshake

[mysql]
default-character-set = utf8

2.パスワードポリシー

まずはMySQLを起動して、ログインしてみる

起動して、ログインします。初期ログインパスワードはランダムで生成されます。
/var/log/mysqld.logに、root@localhost: 【この部分】が記されていますので、最初のログインはこのパスワードを使います。

# service mysqld start
# mysql -u root -h localhost -p
# パスワードを入力

ポリシーを満たしていないとパスワードは設定不可

validate_passwordプラグイン(5.6.6から使用可能。5.7.8から標準)が有効になっていると、パスワードは一定の条件を満たしていないと設定できません。

デフォルトのポリシーレベルは下記のとおりです。

  • 8文字以上
  • 大文字、小文字、数字、英数字以外の特殊文字をそれぞれ1文字以上含む

ポリシーレベルは下記テーブルを参照することで現在の設定を確認できます。

mysql > SHOW VARIABLES LIKE 'validate_password%';

オプション変数についてなど、詳しくは公式サイトを参照してください。
MySQL公式: パスワード検証プラグイン

validate_password_policyとvalidate_password_lengthを変更してみる

SQLコマンドから変更する方法と設定ファイルに書き込んで変更する方法の2通りがあります。

【SQLコマンドで変更する場合】
# パスワードポリシーを文字数のみに
mysql > SET GLOBAL validate_password_policy = LOW;
# パスワード文字数を変更
mysql > SET GLOBAL validate_password_length = 6;

【/etc/my.cnfに設定する場合】
[mysqld]
validate_password_policy = LOW
validate_password_length = 6

設定ファイルで変更した場合は、MySQLを忘れずに再起動しましょう。

# service mysqld restart

以上、パスワードの有効期限パスワードポリシーの設定がMySQL5.7での必須の設定になります。

(Visited 2,357 times, 1 visits today)