CentOS7 SSHポートフォワーディングを使いXSERVERのMySQLに接続
モバイルアプリがXSERVERを参照している。 モバイルアプリ管理ページがXSERVERにあったが、その管理ページを社内サーバーへ移行する時に、社内サーバーからXSERVERのMySQLへ直接接続できなかったためSSHポートフォワーディングを利用した時の覚書。
社内サーバーのPort114514へ接続するとmysql(xserver)のPort3306へ接続するサンプル。
社内サーバー:114514 -> web(xserver) -> mysql(xserver):3306
SSHポートフォワーディング設定
公開鍵/秘密鍵の設置
1. XSERVER管理画面でSSHを有効化
2. 社内サーバーのcron実行ユーザーの~/.ssh/に秘密鍵設置
chmod 600 ~/.ssh/xserver.key
3. 社内サーバーのcron実行ユーザーの~/.ssh/configの設定
Host 接続名 HostName sv9999.xserver.jp User SSHユーザー名 Port SSHポート番号 IdentityFile ~/.ssh/xserver.key
社内サーバーのcron
1.SSHポートフォワーディングコマンド実行スクリプト設置
スクリプトファイル名はssh_xserver_mysql.shとする
#!/bin/bash COMMAND="ssh -f -g -N -C -L 114514:mysql9999.xserver.jp:3306 SSHユーザー名@sv9999.xserver.jp" #プロセスは残っているが接続できないという事があるのでpkillでシメる #pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND pkill -f -x "$COMMAND" ${COMMAND}
2.スクリプトファイルにcron実行ユーザーの実行権限付与
chown cron実行ユーザー名 ssh_xserver_mysql.sh
chmod u+x ssh_xserver_mysql.sh
3.cron設定 ssh_xserver_mysql.shを1分毎に実行
*/1 * * * * cron実行ユーザー名 /スクリプトのパス/ssh_xserver_mysql.sh > /dev/null
MySQL接続
社内サーバー:114514へMySQL接続をするとXSERVERのMySQLへ接続される事を確認
コマンド(社内サーバー上)
mysql -h127.0.0.1 -uMySQLユーザー名 -pMySQLパスワード -D MySQLデータベース名 -P114514
// mysqli_connect $connection = \mysqli_connect('社内サーバー', 'mysqlユーザー名', 'mysqlパスワード', 'mysqlデータベース名', '114514'); // mysqli $mysqli = new \mysqli('社内サーバー', 'mysqlユーザー名', 'mysqlパスワード', 'mysqlデータベース名', '114514');