FreeBSD 12.4 RELEASE - MySQL - パスワード設定
- 1. 概要
- 2. パスワードの有効期限
- 3. validate_password
- 4. パスワードを一時的に単純化
- 5. パスワードを恒久的に単純化
- 6. validate_password 無効化
1. 概要
パスワードに関する設定は、「my.cnf」に記述する内容もあるのですが、いささか面倒なこともあるので、ページを分けました。
ここでは、主にパスワードを単純化するような内容を書いていますが、開発時や私的につかうサーバのみに適用するようにしてください。
実際に他の人が使用するようなサーバでは、きちんとパスワードを利用するようにしないと、セキュリティ上、非常に問題があります。
2. パスワードの有効期限
何も指定しなければ、「MySQL」のパスワードの有効期限は、デフォルトで、360日なのだそうです。
ただし、デフォルトの設定で [mysqld] セクション、28行目に
default_password_lifetime = 0
という行があります。
これはパスワードの有効期限を無期限にする設定で、うっかり忘れると大変なことになりそうな気がします。
幸いなことに、「ports」でインストールした場合、デフォルトで上記設定になっているようです。
3. validate_password
「validate_password」というプラグインが、「MySQL 5.6」あたりから(?)登場しています。
パスワードのチェックは、通常は「validate_password」で行うようです。
明示的にインストールすることもあるようです。
少なくとも、「FreeBSD」上の、「MySQL 8.0」では、デフォルトでインストールされています。
わたしの前ページまでの設定を行ってきた結果は、以下の通り。
mysql> SHOW GLOBAL VARIABLES LIKE 'validate%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| 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 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
「MySQL 5.7」までは、「check_user_name」が「OFF」でしたが、「MySQL 8.0」では、「ON」になっています。
パスワード制限では、「validate_password_policy」の設定値が、あれこれ左右するようで、以下のように設定されるようです。
設定値 | 意味 | 備考 |
LOW | パスワードの長さのみチェック | |
MEDIUM | LOW に加えて、数字・小文字・大文字・特殊文字をそれぞれ1文字ずつ含む | |
STRONG | MIDIUM に加えて、4文字以上の文字列が辞書ファイルの内容と一致してはならない | |
パスワードの長さは、「validate_password_length」で最小文字数が定義されていますが、4より小さい値には設定できません。
4. パスワードを一時的に単純化
パスワードを、テンポラリに、最小文字数4文字のみに設定するには、「mysql」を起動して
(パラメータの項目名が、「MySQL 5.7」までと異なっているので注意)
SET GLOBAL validate_password.length = 4;
SET GLOBAL validate_password.policy = LOW;
このまま、例えば、「root」パスワードを変更するのであれば
SET PASSWORD FOR root@localhost=password('パスワード');
で、変更します。
このままの状態で、「CREATE USER」なり「ALTER USER」なりで、パスワードを設定・変更もできます。
「validate_password」の値は、サーバを再起動するとご破算になりますが、設定したパスワードは有効なままです。
5. パスワードを恒久的に単純化
前項の状態を恒久的に設定するには
vi /usr/local/etc/mysql/my.cnf
で
[mysqld] ← のセクションに
validate_password.length = 4
validate_password.policy = LOW
と2行加えます。
サーバを再起動して、チェックしてみると
$ service mysql-server restart
Stopping mysql.
Waiting for PIDS: 7204.
Starting mysql.
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.31 Source distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW GLOBAL VARIABLES LIKE 'validate%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 4 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
と設定値が反映されていることが確認できます。
6. validate_password 無効化
「MySQL 5.7」では
vi /usr/local/etc/mysql/my.cnf
で
[mysqld] ← のセクションに
validate_password = OFF
を記述すれば、「validate_password」を無効化できていましたが、「MySQL 8.0」では、上記の記述はエラーで、「mysql-server」が起動できません。
これは、現在(2022年12月19日)、調査中です。
|
|