こんにちは。CData Software Japanエンジニアの浦邊です。
今回はCData MySQL DriversでCloud SQL for MySQLにSSL接続する方法を紹介します。
Cloud SQL
Google Cloud PlatformのPaaSデータベースサービスで、リレーショナルデータベースの設定、メンテナンス、運用、管理のフルマネージドサービスを提供します。
データベース製品としてMySQL、PostgreSQL、SQL Serverを使うことができます。
cloud.google.com
CData MySQL Drivers
MySQL互換データベースにアクセスするためのドライバで、ODBCドライバ, JDBCドライバ, Power BIコネクタ, Excel Add-Inなどのラインナップがあります。
例えばMySQL Power BI Connectorを利用すればCloud SQL for MySQLのデータをPower BIで可視化することができます。
www.cdata.com
通常の接続
はじめにSSLを使わない接続方法を紹介します。
ドライバの設定内容は通常のMySQLへの接続と変わりません。
サービスの設定
外部から接続する場合は外部IPからのアクセスを有効にします。
SQL Cloudの[Connetions]から接続画面を開き、[Connectivity]の[Public IP]をチェックします。
続いて[Add Network]をクリックして接続を許可するIPアドレスを指定します。
下図のように「0.0.0.0」を指定するとすべてのIPアドレスからの接続が許可されます。
ドライバの設定
接続プロパティにMySQLの接続情報を設定します。
プロパティ名 |
値 |
User |
MySQLのユーザ名 |
Password |
MySQLのパスワード |
Database |
MySQLのDB名 |
Server |
CloudSQLインスタンスのアドレス |
Port |
MySQLのポート(3306) |
例えば筆者環境では、JDBCドライバを使用する際には以下のような接続文字列を設定します。
jdbc:mysql:User=root;Password=root;Database=test;Server=xx.xx.xx.xx;Port=3306;
これで接続設定は完了です。
DBVisualizerで表示すると、以下のようにSQL CloudのMySQLのデータにアクセスできます。
SSL接続
SSLによる接続ではインスタンスから証明書を取得し、それらの証明書を接続時に指定することで接続可能になります。
サービスの設定
インスタンスから証明書を取得します。
メニューの[Connection]から接続設定画面を開き、[Create a client certificate]をクリックするとクライアント証明書作成ダイアログが表示されます。
証明書の名前を適当に入力し、[Create]をクリックしてください。
クライアントの秘密鍵と証明書、サーバ証明書が作成されますので、それぞれダウンロードしてください。
ドライバの設定
前のセクションでダウンロードした証明書として、下の3つのファイルが存在することを確認してください。
ファイル名 |
内容 |
server-ca.pem |
サーバー証明書 |
client-cert.pem |
クライアントの公開鍵証明書 |
client-key.pem |
クライアント秘密鍵 |
PFXファイルの作成
OpenSSLなどのツールを使ってクライアントの秘密鍵と公開鍵証明書からPFXファイルを作成します。
OpenSSLでPFXを作成する場合は下記のコマンドを実行してください。
このコマンドを実行すると証明書のパスワードが求められますので適当なパスワードを設定してください。
> openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -out cloudsql-test.pfx -name "cloudsql-test"
接続プロパティの設定
接続プロパティに、MySQLの接続情報に加えて証明書ファイルへのファイルパスとパスワードを設定します。
プロパティ名 |
値 |
User |
MySQLのユーザ名 |
Password |
MySQLのパスワード |
Database |
MySQLのDB名 |
Server |
CloudSQLインスタンスのアドレス |
Port |
MySQLのポート(3306) |
SSLServerCert |
server-ca.pemへのファイルパス |
SSLClientCertType |
"PFXFILE" |
SSLClientCert |
作成したPFXファイルへのファイルパス |
SSLClientCertPassword |
PFXファイル作成時に設定したパスワード |
例えば筆者環境では、JDBCドライバを使用する際には以下のような接続文字列を設定します。
jdbc:mysql:User=root;Password=root;Database=test;Server=xx.xx.xx.xx;Port=3306;SSLServerCert="C:\Cert\server-ca.pem";SSLClientCertType=PFXFILE;SSLClientCert="C:\Cert\cloudsql-test.pfx";SSLClientCertPassword=password;
これで接続設定は完了です。
上記接続プロパティの設定で接続できない場合、以下のサーバ証明書のインポートをお試しください。
サーバ証明書のインポート
[スタートメニュー]の[Windowsシステムツール]から[ファイル名を指定して実行]を起動してください。
ファイル名に「mmc」と入力し[OK]を押下すると管理コンソールが起動します。
メニューの[ファイル]から[スナップインの追加と削除]をクリックし、スナップインの追加と削除ダイアログを開きます。
[利用できるスナップイン]から[証明書]を選択し、[追加]をクリックして[選択されたスナップイン]に追加し[OK]をクリックします。
適当なフォルダ上で右クリックし、[すべてのタスク]から[インポート]を選択して[証明書のインポートウィザード]を開きます。
server-ca.pemファイルを選択し、[次へ]をクリックします。
[証明書の種類に基づいて、自動的に証明書ストアを選択する]をチェックし[次へ]をクリックしてインポートを完了します。
これでSSLによる接続が可能になります。
おわりに
本記事ではCData MySQL DriversからCloud SQL for MySQLにSSLで接続する方法を紹介しました。
CData MySQL Driversは30日間の評価版を無料でご利用頂けます。
Cloud SQL for MySQLとのデータ連携をご検討の方はぜひお試しください。
関連コンテンツ