コマンドラインから IAM 認証を使用して、DB インスタンスに接続する: AWS CLI および mysql クライアント
以下に示すように、AWS CLI および mysql
コマンドラインツールを使用して、コマンドラインから Amazon RDS DB インスタンスに接続できます。
前提条件
IAM 認証を使用して DB インスタンスに接続するための前提条件は以下のとおりです。
注記
IAM 認証を使用して SQLWorkbench/J を使用してデータベースに接続する方法については、ブログ記事「IAM 認証を使用して SQL Workbench/J で Aurora MySQL または Amazon RDS for MySQL に接続する
IAM 認証トークンの生成
次の例では、AWS CLI を使用して署名された認証トークンを取得する方法を示します。
aws rds generate-db-auth-token \ --hostname
rdsmysql.123456789012.us-west-2.rds.amazonaws.com
\ --port3306
\ --regionus-west-2
\ --usernamejane_doe
この例で、パラメータは次のとおりです。
-
--hostname
- アクセス先の DB インスタンスのホスト名。 -
--port
- DB インスタンスへの接続に使用するポート番号 -
--region
- DB インスタンスが実行中の AWS リージョン -
--username
- アクセス先のデータベースアカウント
トークンの初期の複数の文字は次のようになります。
rdsmysql.123456789012.us-west-2.rds.amazonaws.com:3306/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
注記
DB インスタンスエンドポイントの代わりに、カスタム Route 53 DNS レコードを使用して認証トークンを生成することはできません。
DB インスタンスへの接続
接続の全般的な形式を次に示します。
mysql --host=
hostName
--port=portNumber
--ssl-ca=full_path_to_ssl_certificate
--enable-cleartext-plugin --user=userName
--password=authToken
パラメータは次のとおりです。
-
--host
- アクセス先の DB インスタンスのホスト名。 -
--port
- DB インスタンスへの接続に使用するポート番号 -
--ssl-ca
- 公開キーを含む SSL 証明書ファイルへのフルパスMariaDB での SSL/TLS サポートについては、「Amazon RDS 上の MariaDB DB インスタンスの SSL/TLS サポート」を参照してください。
MySQL での SSL/TLS サポートについては、「Amazon RDS 上の MySQL DB インスタンスの SSL/TLS サポート」を参照してください。
SSL 証明書をダウンロードするには SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化 を参照ください。
-
--enable-cleartext-plugin
- この接続でAWSAuthenticationPlugin
を使用する必要があることを示す値MariaDB クライアントを使用している場合、
--enable-cleartext-plugin
オプションは必須ではありません。 -
--user
- アクセス先のデータベースアカウント -
--password
- 署名済みの IAM 認証トークン
認証トークンは数百の文字で構成されます。これは、コマンドラインでは手に負えなくなる可能性があります。この問題を回避する 1 つの方法は、環境可変にトークンを保存し、接続時にその可変を使用することです。次の例は、この回避策を実行する 1 つの方法を示しています。この例では、/sample_dir/
が公開キーを含む SSL 証明書ファイルへのフルパスです。
RDSHOST="
mysqldb.123456789012.us-east-1.rds.amazonaws.com
" TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port3306
--regionus-west-2
--usernamejane_doe
)" mysql --host=$RDSHOST --port=3306
--ssl-ca=/sample_dir/
global-bundle.pem --enable-cleartext-plugin --user=jane_doe
--password=$TOKEN
AWSAuthenticationPlugin
を使って接続した場合、接続は SSL を使用して保護されます。これを確認するには、mysql>
コマンドプロンプトで以下を入力します。
show status like 'Ssl%';
出力の次の行に詳細情報が示されます。
+---------------+-------------+ | Variable_name | Value | +---------------+-------------+ | ... | ... | Ssl_cipher | AES256-SHA | | ... | ... | Ssl_version | TLSv1.1 | | ... | ... +-----------------------------+
プロキシ経由で DB インスタンスに接続する場合は、「IAM 認証を使用したプロキシへの接続」を参照してください。