MySQL および Amazon Aurora に対する IAM データベース認証 - Amazon Relational Database Service
という資料にある通り、AWSのRDSでは IAM 認証を利用してDBにアクセスする方法があるのでそれを試した話。
まず、Tokenは長いです。
というのが前提。
Mac上のiTerm2で作業を行っていたのですが
コマンドライン: AWS CLI および mysql クライアント - Amazon Relational Database Service
に記載がある通り、TOKENを変数に入れておきそれを利用するような場合は普通にうまくいきます。
しかし、例えば、TOKEN生成はローカルで行い、踏み台サーバからRDSにアクセスするようなケースだと、それがうまくできないため
aws rds generate-db-auth-token \ --hostname hostName \ --port 3306 \ --region us-west-2 \ --username jane_doe
このようなことをローカルで行い、TOKENをクリップボードにコピーします。 つづいて、踏み台にログインし
mysql --host=hostName --port=portNumber --ssl-ca=[full path]rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password
のようなコマンドで、パスワード入力プロンプトを出してペーストするのが普通かなと思うのですが、この方法では再三試してもうまくいきませんでした。
しょうがないので
mysql --host=hostName --port=portNumber --ssl-ca=[full path]rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password="ここにTOKENをペースト"
このようなコマンドにすると、うまくいきます。
ただ、15分しか有効でないとはいうものの、出来れば表示したくないし、履歴が無駄に長くなるというのもあるので何とかしたいのでいい方法を探しています。
という話。
また、AWSのドキュメントにはMySQL クライアントの利用方法であって、 MariaDBのクライアントだと、--enable-cleartext-plugin
オプションがなかったりする(CentOS7.5のmariadb v5.5.60とかv10.3.10とか)ので、その際は代わりに --default-auth=mysql_clear_password
を利用しましょうという学びがありました。オプションを探すのに手間取ったので忘れないように。