MySQL5.7 パスワード ポリシーの設定 (同等のセキュリティを持つ第 3 レベルのパスワードのレトロフィット)

目次

ターゲット パスワード ポリシー

1. 少なくとも 1 つの大文字、少なくとも 1 つの小文字、少なくとも 1 つの数字、少なくとも 1 つの文字、少なくとも 9 文字の長さ

1.現在の構成を表示する

2. 既存のプラグインを表示する

3.プラグインを追加

4. 詳細なパスワード ポリシー構成

5. 戦略成果テスト

2. 60 日間のパスワード有効期限を設定する

3.全体の変更計画


ターゲット パスワード ポリシー

対象のパスワード ポリシー:少なくとも 1 つの大文字、少なくとも 1 つの小文字、少なくとも 1 つの数字、少なくとも 1 つの文字、少なくとも 9 文字の長さ、60 日間のパスワード有効期限。

私のバージョン番号: 5.7.21

1. 少なくとも 1 つの大文字、少なくとも 1 つの小文字、少なくとも 1 つの数字、少なくとも 1 つの文字、少なくとも 9 文字の長さ

1.現在の構成を表示する

「validate_password%」などの変数を表示します。

私のmysqlにはパスワード検証プラグインがありません

このプラグインを使用すると、次のようになります

 パスワード ポリシーが my.cnf 構成ファイルで直接変更されている場合、システムはデフォルトでパスワード プラグインをインストールします。それ以外の場合、データベースには最初からパスワード プラグインがデフォルトでインストールされていません。

プラグインをインストールするには、これを参照してください: mysql install plugin validate_password_船长115的博客-CSDN Blog_mysql install plugin

2. 既存のプラグインを表示する

プラグインのパスを表示する  show variables like 'plugin_dir'; 

私が必要とするこのプラグイン「validate_password.so」があります

3.プラグインを追加

my.cnf を変更する

#プラグイン ライブラリのファイル名は validate_password です.ファイル名のサフィックスはプラットフォームによって異なります (たとえば、linux は .so で、Windows は .dll です)。

 Linux 追加:

[mysqld]
plugin-load-add=validate_password.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件。
validate-password=FORCE_PLUS_PERMANENT

再起動後、クエリは「validate_password%」などの変数を表示し、結果は次の図のようになります。

パスワードプラグインをインストールした後、直接変更することもできます


-- 次のコマンドを使用して、パスワード検証ポリシーの低要件を変更できます(0 または LOW は低レベルを意味します)
set global validate_password.policy=MEDIUM;

-- パスワードに少なくとも含まれる必要がある小文字と大文字の数
set global validate_password.mixed_case_count=1;

--パスワードに少なくとも含まれている必要がある桁数。
グローバルvalidate_password.number_count = 1を設定します。 

--パスワードに少なくとも含める必要がある特殊文字の数
set global validate_password.special_char_count=1; 

-- パスワードの長さは、
グローバルな validate_password.length=8 に設定されています。 

 

4. 詳細なパスワード ポリシー構成

パスワード ポリシー変数の意味:

validate_password.policy:パスワード ポリシー。ユーザーのパスワードを確認します。

        0: (低) パスワードの最小長は 8 文字です。

        1: (Mediumpolicy) 少なくとも 1 つの数字、1 つの小文字、1 つの大文字、および 1 つの特殊文字を含む (デフォルト値)

        2: (強力なポリシー) 長さ 4 以上のコドン文字列は、辞書ファイル内の単語と一致してはなりません

validate_password.length:パスワードに必要な最小文字数。デフォルトは 8 です。

validate_password.number_count:パスワードに必要な数字の最小数。デフォルトは 1 です。

validate_password.mixed_case_count:パスワードに必要な小文字と大文字の最小数。デフォルトは 1 です。

validate_password.special_char_count:パスワードが必要な特殊文字の最小数。デフォルトは 1 です。

validate_password.dictionary_file:パスワードのチェックに使用される辞書ファイルのパス名。デフォルトは none です。

以下は私の構成です:

 数字 1 つ、小文字 1 つ、大文字 1 つ、特殊文字 1 つ、9 文字以上。

5. 戦略成果テスト

#'123456' で識別されるユーザー 'root'@'%' を変更します。

2. 60 日間のパスワード有効期限を設定する

select * from mysql.user;

N は有効期限が切れていないことを意味し、Y は有効期限が切れたことを意味します。デフォルトは N で、期限切れになりません。

パスワードを期限切れに設定するステートメントは、alter user 'username'@'host' password expire; などです。

alter user 'root'@'localhost' password expire;

このとき、

select * from mysql.user;

root の password_expired フィールドが Y になっていることを確認し、再度ログインすると、接続できていないことがわかり、パスワードの有効期限が切れていることを確認するメッセージが表示されます。解決策は、ログイン パスワードを変更することです。

インターネットでステートメントを表示すると、次のように、有効期限が切れるまでの日数 (期限が切れるまでの日数) を日単位で変更できます。

ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 30 DAY;

または、次のようにパスワードを無期限に変更します。

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

または、有効期限なしでこの方法でパスワードを変更します。

SET GLOBAL default_password_lifetime = 0;

ここで実行します:

ALTER USER 'root'@'%' PASSWORD EXPIRE INTERVAL 60 DAY;

以下の結果:

3.全体の変更計画

 最終的な変更計画を共有する

#----------------
ターゲット パスワード ポリシー
#----------------
少なくとも 1 つの大文字、少なくとも 1 つの小文字、少なくとも 1 つの大文字数字、1 文字以上、長さ 9 文字以上、60 日間のパスワード有効期限。

#----------------
root パスワードの有効期限を変更し、再起動する必要はありません
#----------------


マスターとスレーブはそれぞれ次の手順を実行します。
1. 有効期限を変更します
ALTER USER 'root'@'%' PASSWORD EXPIRE INTERVAL 60 DAY;

2. 実行結果を確認します。password_lifetime は 60
select * from mysql.user;です。

#----------------
少なくとも 1 つの大文字、少なくとも 1 つの小文字、少なくとも 1 つの数字、少なくとも 1 つの文字、少なくとも 9 文字の長さで、データベースを再起動する必要があります
# -------- --------

0.

データベースの起動シーケンス
アプリケーションの停止 -> データベースの停止 (最初にバックアップ、後でマスター) -> 構成の変更 -> データベースの開始 (最初にメインのバックアップ) -> アプリケーションの開始
https://blog.csdn.net/qq_41466440/article/details/125104962

1.
アプリケーションを停止します 

2.
MySQL スレーブ ライブラリを閉じます
a. まず、現在のマスターとスレーブの同期ステータスを確認します show slave statusG; 二重かどうかを確認します
b. stop slave を実行します
c. スレーブ ライブラリ サービスを停止します mysqladmin shutdown -u username -p password (service mysqld stop)
d .mysql プロセスがまだ存在するかどうかを確認します ps -ef | grep mysql
d. 複数のインスタンスがデプロイされている場合、各インスタンスは上記の手順に従う必要があります

3.
MySQL メイン ライブラリを閉じます
a. メイン ライブラリ サービスを停止します mysqladmin shutdown -u username -p password (service mysqld stop)
b. まだ mysql プロセスがあるかどうかを確認します ps -ef | grep mysql

4.
構成ファイル
vim /etc/my.cnfを編集
し、以下を追加しますvalidate-password=FORCE_PLUS_PERMANENT #パスワードポリシーvalidate_password_policy=1 validate_password_length=9






5.
MySQL メイン ライブラリを起動します
a. メイン ライブラリ サービスを起動します mysqladmin start -u username -p password (service mysqld start)
b. mysql ps -ef | grep mysql のプロセスを表示します

6.
MySQL スレーブ ライブラリを開始する
a. スレーブ ライブラリ サービスを開始する mysqladmin start -u username-p password (service mysqld start)
b. レプリケーションを開始する start slave;
c. 同期ステータスを確認する show slave statusG; double yes
d. mysql を表示するプロセス ps -ef | grep mysql

7.
プラグインと戦略が正常に追加されたかどうかを確認します
service mysqld restart
show variables like 'validate_password%';

おすすめ

転載: blog.csdn.net/Ahuuua/article/details/125359010