FreeBSD 14.1 RELEASE - MySQL - パスワード設定・他

クラウディア 
1. 概要
2. パスワードの有効期限
3. validate_password
4. validate_password 無効化
5. validate_password 有効化
6. 日々のメンテナンス

1. 概要

 パスワードに関する設定は、「my.cnf」に記述する内容もあるのですが、いささか面倒なこともあるので、ページを分けました。  ここでは、主にパスワードを単純化するような内容を書いていますが、開発時や私的につかうサーバのみに適用するようにしてください。  実際に他の人が使用するようなサーバでは、きちんとパスワードを利用するようにしないと、セキュリティ上、非常に問題があります。  本ページでは、パスワードなしの設定もできるようになっています。  お勧めはしませんが、「root」に対して、パスワードなしも設定できます。  本ページは、下記のサイトを参考にさせていただきました。
mysql 8.0 でパスワードなしに設定する方法」
「MySQL の validate_password のルールをゆるくする」
「Mysql 5.7* パスワードを Policy に合わせるとめんどくさい件について」
「MySQL(5.7)メモ

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

 何も指定しなければ、「MySQL」のパスワードの有効期限はデフォルトで 360日なのだそうです。  ただし、デフォルトの設定で [mysqld] セクション、28行目に

default_password_lifetime       = 0
 という行があります。  これはパスワードの有効期限を無期限にする設定で、うっかり忘れると大変なことになりそうな気がします。  幸いなことに「ports」でインストールした場合、デフォルトで上記設定になっているようです。

3. validate_password

 「validate_password」というプラグインが、「MySQL 5.6」あたりから、登場しています。  パスワードのチェックは、通常は「validate_password」で行うようです。  「validate_password」の値を見るには。

mysql> SHOW VARIABLES LIKE 'validate_password%';
Empty set (0.02 sec)
 「MySQL 5.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.00 sec)
 「MySQL 8.0」で、確認すると。

mysql> SHOW GLOBAL VARIABLES LIKE 'validate%';
+-------------------------------------------------+--------+
| Variable_name                                   | Value  |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| validate_password.check_user_name               | ON     |
| 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      |
+-------------------------------------------------+--------+
8 rows in set (0.00 sec)
 微妙に違います。  「validate_password_policy」の設定値が、あれこれ左右するようで、以下のように設定されるようです。
設定値 意   味  備考 
LOW パスワードの長さのみチェック
MEDIUM LOW に加えて、数字・小文字・大文字・特殊文字をそれぞれ1文字ずつ含む
STRONG MIDIUM に加えて、4文字以上の文字列が辞書ファイルの内容と一致してはならない

 パスワードの長さは、「validate_password_length」で最小文字数が定義されていますが、4より小さい値には設定できません。

4. validate_password 無効化

 「validate_password」を無効化するには、「mysql」へ「root」ログインして。

UNINSTALL COMPONENT 'file://component_validate_password';
 極端に言えば、無効化しておけば、パスワードなしの設定もできます。

SET PASSWORD FOR 'ユーザ名'@'localhost' = '';

5. validate_password 有効化

 無効化した「validate_password」を有効化するには、「mysql」へ「root」ログインして。

INSTALL COMPONENT 'file://component_validate_password';

6. 日々のメンテナンス

 その他、データベースのバックアップやリストア、ログの出力やローテーションについては「データベース - MySQL」の方へ掲載するようにしましたのでそちらをご参照ください。
earthcar(アースカー)