MySQLをSSL化し、外部からセキュアな通信で接続する方法です。
MySQLのインストールかつ証明書は既に作成していることを前提とします。
まずはサーバ側の設定を書き換えてサーバ証明書を設定します。
$ vi /etc/my.cnf
下記の3行を追加します。
ssl-ca=/var/lib/mysql/.ssl/ca.pem ssl-cert=/var/lib/mysql/.ssl/server-cert.pem ssl-key=/var/lib/mysql/.ssl/server-key.pem
MySQLを再起動すればサーバ側のSSL化の完了です。
$ /etc/init.d/mysqld restart
続いて、MySQLを外部から接続ができるように設定します。
MySQLはデフォルトのままだとlocalhostからしか接続することができません。
外部から接続するにはuserテーブルにユーザーを追加する必要があります。
mysql> select host from mysql.user; +-----------------+ | host | +-----------------+ | 127.0.0.1 | | ip-10-250-40-51 | | ip-10-250-40-51 | | localhost | | localhost | | localhost | +-----------------+ 6 rows in set (0.00 sec) mysql> grant all privileges on データベース名.* to ユーザー名@"%" identified by 'パスワード' with grant option; Query OK, 0 rows affected (0.00 sec) mysql> select host from mysql.user; +-----------------+ | host | +-----------------+ | % | | 127.0.0.1 | | ip-10-250-40-51 | | ip-10-250-40-51 | | localhost | | localhost | | localhost | +-----------------+ 7 rows in set (0.00 sec)
これで外部からの接続設定が完了します。
続いてクライアント側からの接続です。
下記のように接続に必要な鍵ファイルを指定すればmysqlコマンドで接続することができます。
> mysql -h ホスト名 -P 3306 --ssl-key=client-key.pem --ssl-ca=ca.pem --ssl-cert=client-cert.pem -u ユーザー名 -p
SQLWorkbench等でもサーバで設定した鍵ファイルを指定すれば接続することができます。