AWS でデータベースを使う際、MySQL サーバを立てるよりも RDS(MySQL)を使う方が楽です。
ただし、データベースのメンテナンスには MySQL クライアントがあると便利なので、EC2 で実行できるようにしておきます。
RDS は MySQL5.7 ベースのエンジンで構築しているので、クライアントもそれにあわせて設定したいと思います。
RDS の構築は「AWSでパラメータグループを設定してからRDS(MySQL5.7)のインスタンス作成をする」で書いているので興味があれば参照してください。

MySQLクライアントのインストール
MySQL のパッケージはバージョン別にいくつかあるので、5.7 を指定してインストールを進めます。
1 2 3 | $ yum search mysql | grep 'mysql57' mysql57.x86_64 : MySQL client programs and shared libraries |
MySQL5.7 用のパッケージをインストールします。
1 | $ yum -y install mysql57 |
MySQLクライアントの設定
クライアント側で設定することはそれほどないですが、以下の 2 つを設定しておくと運用が楽です。
また、バッチを実行する際にも活用できます。
・クライアントの文字コードの設定
・認証ファイルの作成
・エイリアスの作成
クライアントの文字コードの設定
MySQL のクライアントの文字コードをサーバと同じく utf8mb4 にしておきます。
my.cnf のファイルに以下を追記すれば問題ありません。
1 2 3 4 | $ vi /etc/my.cnf [mysql] default-character-set=utf8mb4 |
認証ファイルの作成
MySQL5.6 から mysql コマンドの -p オプションにパスワードを指定することが推奨されなくなりました。
これは昔から history にそのまま残ってしまう問題があり、ターミナルで直接コマンド入力をすることはタブーでしたが、バッチ処理などでは使っていた方式です。
現在は警告が表示されるので、外部ファイルで代用します。警告メッセージはこんな感じ。
mysql: [Warning] Using a password on the command line interface can be insecure.
以下のような、データベースへの接続設定を書いたファイルを作成します。
1 2 3 4 5 6 | $ vi /etc/.my.cnf [client] user = [ユーザID] password = [パスワード] host = [ホスト名] |
ファイルのパーミッションも厳密にしておきましょう。
例えば、root ユーザのみ参照する場合は以下の通りです。
1 | $ chmod 600 /etc/.my.cnf |
これで、mysql コマンドから認証ファイルを指定してログインすることができます。
1 | $ mysql --defaults-extra-file=/etc/.my.cnf [データベース名] |
セキュリティグループの設定
接続待ち状態が続きログインができない場合は、RDS のセキュリティグループの設定が正しくない可能性があります。
RDS 設定時に VPC 内のアクセスが有効になっていない場合はセキュリティグループの設定を調整しておきましょう。
エイリアスの作成
認証ファイルを指定してログインするのもいいですが、エイリアスを作成しておくともっと楽になります。
マスタのデータベースという意味で「mdb」というエイリアスコマンドを設定してみます。
1 2 3 | $ vi /root/.bashrc alias mdb='mysql --defaults-extra-file=/etc/.my.cnf [データベース名]' |
作成したら、再度シェルにログインするか source コマンドで読み込ませます。
1 | $ source /root/.bashrc |
以降は mdb というコマンドでデータベースに接続できるようになります。
1 2 3 4 5 6 | $ mdb Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 520 Server version: 5.7.21-log MySQL Community Server (GPL) mysql> |
MySQL の状態を確認しておきます。
1 2 3 4 5 6 7 8 | mysql> status mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper Server version: 5.7.21-log MySQL Community Server (GPL) Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 |
以上で MySQL クライアントの設定は完了です。