開発環境(ローカルPC)からSSHトンネルを使ってXserverのMysqlに接続する

XserverのMysqlサーバはSSH経由でのみアクセス可能です。
ローカルPC → XserverのWebサーバ(SSH経由) → XserverのDBサーバという順序でアクセスする必要があります。

PHP内でSSHコネクションを張ってMYSQLに接続しようとしたのですがどうしてもうまくいかなかったのでバックグラウンドでXserverのWebサーバにSSHトンネルを張って対応しました。

SSHトンネルコマンド

ssh -f -g -N -C -L {ローカルポート}:{リモートdbホスト}:3306 {sshユーザ}@{リモートsshホスト} -p {リモートSSHポート} -i {鍵ファイル} -P

オプションの意味
-f バックグラウンドで実行
-g ロカールポート接続許可
-N リモートコマンド無効
-C データ圧縮
-L ポートフォワード指定
-p ポート指定
-P SSH接続時にパスワードが必要
-i SSH接続時の鍵ファイル指定

PHP内の接続コマンド(PDO)

new PDO("mysql:host=127.0.0.1;port={ローカルポート};dbname={データベース名};charset=utf8",{DBユーザID},{DBパスワード})

コメント