MySQL 8.0 パスワード有効期限ポリシーの詳細な説明

MySQL 8.0 パスワード有効期限ポリシーの詳細な説明

MySQL 8.0.16 以降では、パスワードの有効期限ポリシーを設定できます。今日は、この小さな知識ポイントについて詳しく説明します。

1. パスワードの有効期限を手動で設定する

MySQL 8.0 では、alter user コマンドを使用してパスワードを期限切れにすることができます。

まずアカウントyeyzを作成します。パスワードはyeyzです。

[root@VM-0-14-centos ~]# /usr/local/mysql-8.0.19-el7-x86_64/bin/mysql -uyeyz -pyeyz -h127.0.0.1 -P4306 -e "1を選択"
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
+---+
| 1 |
+---+
| 1 |
+---+

ここで期限切れにします:

mysql> ユーザー yeyz@'127.0.0.1' のパスワードの有効期限を変更します。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

もう一度接続を見てみましょう:

[root@VM-0-14-centos ~]# /usr/local/mysql-8.0.19-el7-x86_64/bin/mysql -uyeyz -pyeyz -h127.0.0.1 -P4306 -e "1を選択"
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
--connect-expired-password オプションを使用するか、対話モードで mysql を起動してください。

-- --connect-expire-password コマンドで接続するように求められます。これを追加して確認してみましょう。[root@VM-0-14-centos ~]# /usr/local/mysql-8.0.19-el7-x86_64/bin/mysql -uyeyz -pyeyz -h127.0.0.1 -P4306 --connect-expired-password -e "select 1" 
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
1 行目のエラー 1820 (HY000): このステートメントを実行する前に、ALTER USER ステートメントを使用してパスワードをリセットする必要があります。

-- ここでは、まずパスワードを変更するために alter user 構文を実行し、その後そのパスワードを使用するように求められます。

もちろん、パスワードの有効期限を手動で設定するだけでなく、パスワードを無期限に設定し、有効期限を指定することもできます。

-- パスワードを無期限に設定するmysql> create user yeyz1@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz1' password expire never;
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

-- パスワードの有効期限を指定された日数に設定します。mysql> create user yeyz2@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz2' password expire interval 90 day; 
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

グローバル パスワード有効期限ポリシーに従う場合は、default キーワードを使用できます。

mysql> create user yeyz3@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz3' password expire default;
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

この場合、パラメータ default_password_lifetime で設定された時間が尊重されます。

2. グローバルパスワードの有効期限を設定します。

すべてのパスワードに有効期限を設定する場合は、パラメータ default_password_lifetime を設定できます。デフォルト値は 0 で、自動パスワード有効期限は無効になります。 default_password_lifetime の値が正の整数 N の場合、許可されたパスワードの有効期間を日数で示し、パスワードは N 日ごとに変更する必要があります。

mysql> '%lifetime%' のような変数を表示します。
+---------------------------+-------+
| 変数名 | 値 |
+---------------------------+-------+
| デフォルトパスワードの有効期間 | 0 |
+---------------------------+-------+
セット内の 1 行 (0.00 秒)

3. グローバルパスワードの再利用時間と再利用間隔の数を設定する

ここでの再利用可能時間、再利用可能間隔、有効期限は異なる概念であることに注意してください。有効期限とは、パスワードがその時間に期限切れになり、使用できなくなることを意味します。再利用可能とは、履歴パスワードは指定された時間が経過した後、またはパスワードが指定された回数変更された後にのみ再利用できることを意味します。

単一のパスワードの再利用可能な時間、または再利用可能な間隔の数を次の方法で設定できます。

有効期限は、パスワードを変更する必要があるまでの期間を示します。

有効期限の回数は、新しいパスワードを設定できる回数を示します。

これら 2 つの関数では、それぞれパラメータ password_history と password_reuse_interval を使用する必要があります。

password_history パラメータをテストしてみましょう。

mysql> alter user yeyz@'127.0.0.1' を 'mysql_native_password' で 'yeyz' によって識別します。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

マイSQL> 
mysql> '%password_history%' のような変数を表示します。
+------------------+-------+
| 変数名 | 値 |
+------------------+-------+
| パスワード履歴 | 0 |
+------------------+-------+
セット内の 1 行 (0.00 秒)

mysql> グローバル password_history=2 を設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

-- 最初の変更、成功mysql> alter user yeyz@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz';
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

-- 2 回目の変更、エラーが報告されましたmysql> alter user yeyz@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz';
エラー 3638 (HY000): パスワード履歴ポリシーに矛盾するため、'[email protected]' のこれらの資格情報は使用できません。
マイSQL>

ご覧のとおり、最初は password_history パラメータが 0 に設定されています。これを 2 に変更します。これは、パスワード設定アクションを 2 回実行した後にのみ以前のパスワードを繰り返すことができることを意味します。つまり、今回変更されたパスワードは以前のパスワードと同じにすることはできません。次に、パスワードを同じパスワード「yeyz」に変更し始めました。 最初に変更したときは成功しました。 2 回目にパスワードを設定すると、エラー メッセージが表示されました。

この方法は、システム変数を通じて有効なパスワードの数を設定する方法です。

4. パスワードを再利用する時間と間隔を設定する

-- パスワードを 5 回ごとに再利用するように設定します。mysql> create user yeyz3@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz3' password history 5;
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

-- パスワードを 5 日ごとに再利用するように設定します。mysql> create user yeyz4@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz4' password use interval 5 day; 
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

-- パスワードを 5 日ごと、または 5 回ごとのいずれか厳しい方で再利用するように設定します。mysql> create user yeyz5@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz5' password use interval 5 day password history 5;
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

-- デフォルトのグローバル パスワード再利用ポリシー、つまり、パスワード履歴パラメータとパスワード再利用間隔パラメータを使用します。mysql> create user yeyz6@'127.0.0.1' identified with 'mysql_native_password' by 'yeyz6' password use interval default password history default; 
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

以上がMySQL 8.0のパスワード有効期限ポリシーの詳細な説明です。MySQL 8.0のパスワード有効期限ポリシーの詳細については、123WORDPRESS.COMの他の関連記事にご注目ください。

以下もご興味があるかもしれません:
  • MySQL の安全なパスワード入力のいくつかの操作の紹介
  • MySQL 5.6 でセキュア処理パスワードを変更する方法
  • MySQL8のパスワードを忘れた場合の簡単な解決策
  • Mac で MySQL 8.0.22 のパスワードを取得する方法
  • MySQLでルートユーザーのパスワードを変更する方法
  • MySQLはパスワードなしでログインする例を実装しています
  • Linux mysql-5.6 でルート パスワードをリセットする方法
  • MySQLを安全にシャットダウンする方法
  • MySQLプロセスを安全かつ適切にシャットダウンする方法
  • 年末ですが、MySQL パスワードは安全ですか?

<<:  Win10にnginxをインストールして設定するプロセス

>>:  vue+element カスタムクエリコンポーネント

推薦する

この記事では、6つの負荷分散技術の実装方法をまとめます(要約)

ロード バランシングは、サーバー クラスタの展開でよく使用されるデバイスです。マシンのパフォーマンス...

HTML の <input> タグの詳細な説明と、それを無効にする方法

定義と使用法<input> タグはユーザー情報を収集するために使用されます。 type ...

ネイティブ JavaScript を使用して計算機のサンプル コードを開発する

計算機の主な機能は数値計算を実行することです。計算機機能の Web インスタンスを開発すると、js ...

Ubuntu 20.04 をインストールした後に行うべきこと (初心者向けガイド)

Ubuntu 20.04 がリリースされ、多くの新機能が導入されましたが、慣れていない機能も多くあ...

MySQL で指定エンコーディングを実装する際の落とし穴について

前面に書かれた環境: MySQL 5.7+、MySQL データベースの文字エンコードは utf8、テ...

Dockerコンテナを使用してホストネットワークにアクセスする方法

最近、nginx をリバース プロキシとして使用し、docker で nginx を実行するシステム...

Linux での UDP について学ぶ

目次1. UDPとLinuxの基礎の紹介2. 各機能の使い方1. ソケット機能の使用2. バインド機...

Podmanはコンテナを自動的に起動し、Dockerと比較します

目次1. podmanの紹介2. Dockerと比較した利点3. 互換性4. バックグラウンド サー...

Linux で複数のファイルの名前を一括で変更する方法

Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のフ...

Vue3 で状態管理を実装するために provide を使用する方法

目次序文provide/inject を通じて Vuex 関数を実装する方法このプラグインをアプリケ...

Mysqlのインポートとエクスポート時に発生する問題の解決

背景すべての業務を Docker の運用管理に移行してから、一連の落とし穴に遭遇しましたが、今回は ...

MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明

この記事では、例を使用して、MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離...

JavaScriptプロトタイプとプロトタイプチェーンを徹底的に理解する

目次序文基礎を築くプロトタイプコンストラクタのプロパティ__プロト__プロトタイプチェーン改善する要...

Linux サーバーに SSH パスワードなしでログインする方法

テスト サーバーにログインするたびに、必ず ssh ログインのパスワードを入力する必要があります。ロ...

jQueryはシンプルなボタンの色の変更を実装します

HTML と CSS で、ボタンの色を設定したいとします。 目的の効果は得られますが、プロセスはかな...