MySQL Shell 8.0  /  MySQL Shell スタートガイド  /  プラガブルパスワードストア

このページは機械翻訳したものです。

4.4 プラガブルパスワードストア

MySQL Shell をより柔軟かつセキュアに使用するために、キーチェーンなどのシークレットストアを使用してサーバー接続のパスワードを永続化できます。 対話形式で接続のパスワードを入力すると、接続の資格証明としてサーバー URL とともに格納されます。 例:

mysql-js> \connect user@localhost:3310
Creating a session to 'user@localhost:3310'
Please provide the password for 'user@localhost:3310': ********
Save password for 'user@localhost:3310'? [Y]es/[N]o/Ne[v]er (default No): y

サーバー URL のパスワードが格納されると、MySQL Shell はセッションを開くたびに、構成済の Secret Store Helper からパスワードを取得して、対話形式でパスワードを入力せずにサーバーにログインします。 MySQL Shell によって実行されるスクリプトについても同じことが保持されます。 Secret Store Helper が構成されていない場合、パスワードは対話形式でリクエストされます。

重要

MySQL Shell では、サーバー URL とパスワードはシークレットストアを介してのみ永続化され、パスワード自体は永続化されません。

パスワードは、手動で入力した場合にのみ永続化されます。 サーバー URI のような接続文字列を使用して、または mysqlsh の実行時にコマンドラインでパスワードを指定した場合、そのパスワードは永続化されません。

MySQL Shell への接続に使用できるパスワードの最大長は 128 文字です。

MySQL Shell では、次のシークレットストアの組込みサポートが提供されます:

  • MySQL サーバーでサポートされているすべてのプラットフォーム (MySQL クライアントパッケージがインストールされている場合) で使用可能な MySQL login-path で、永続記憶域を提供します。 mysql_config_editor — MySQL 構成ユーティリティーを参照してください。

  • macOS キーチェーン。「ここ」を参照してください。

  • Windows API については、「ここ」を参照してください。

MySQL Shell が対話モードで実行されている場合、新しいセッションが開始され、ユーザーにパスワードの入力を求めるプロンプトが表示されるたびにパスワードの取得が実行されます。 プロンプトが表示される前に、Secret Store Helper に対して、セッション URL を使用してパスワードをクエリーします。 一致するものが見つかった場合は、このパスワードを使用してセッションを開きます。 取得したパスワードが無効な場合は、メッセージがログに追加され、パスワードがシークレットストアから消去され、MySQL Shell によってパスワードの入力を求められます。

MySQL Shell が非対話モードで実行されている場合 (たとえば、--no-wizard が使用された場合)、パスワードの取得は対話モードと同じ方法で実行されます。 ただし、この場合、Secret Store Helper で有効なパスワードが見つからないと、MySQL Shell はパスワードなしでセッションを開こうとします。

サーバー URL のパスワードは、MySQL サーバーへの接続が成功し、パスワードがシークレットストアヘルパーによって取得されなかった場合は常に格納できます。 パスワードを格納するかどうかは、ここで説明する credentialStore.savePasswords および credentialStore.excludeFilters に基づいて決定されます。

パスワードの自動格納および自動取得は、次の場合に実行されます:

  • mysqlsh は、最初のセッションの確立時に接続オプションを使用して起動されます

  • 組込みの\connect コマンドを使用する場合

  • shell.connect() メソッドを使用する場合

  • 接続が必要な AdminAPI メソッドを使用する場合