ロリポップのDBにSSH越しに接続する方法(未解決)

 本記事ではロリポップのDBサーバー(MySQL)にロリポップユーザーページなどを介さずアクセスする方法をまとめてあります。ただし、A5 SQL Mk2などのDBツールからのSSHトンネルによる接続は出来ておりません(SSHクライアントからの接続は可能)。

WordPress の DB へのリモート作業が必要になった

 FITSではWordPressのプラグインを利用したシステム依頼されることがあり、お客様の WordPress の DB に対して、WordPress 越しではなく、A5 SQL Mk2 などの DB ツールから操作する必要が生じた、というのがそもそもの経緯でした。なお、サーバーはロリポップです。

SSHトンネルについてサポートに質問を出す

 ロリポップ!レンタルサーバー(運営はGMOペパボ株式会社)はユーザーサポートが充実しており、契約者は電話サポートを受けることができます。ただし電話サポートが受けられるのはスタンダードプラン以上となっています(エコノミープラン、ライトプランは受けられない)。エコノミープラン、ライトプランでも問い合わせフォームからの連絡は可能なので、まずはここからSSHトンネルを通してDBへの外部からの接続が可能かを問い合わせました。

回答としては

SSHでmysql(データベース)に接続することは可能ではございますが、SSHやデータベースの利用方法につきましては基本的にはサポート外となりますためお手数ですが、詳細な利用方法については専門書籍や参考サイト等をご活用いただきますようお願い申し上げます。

とのこと。ちなみにこちらの質問は金曜の15時に連絡をしてから、土曜日の15時に返信が返ってきました。営業日ではない日に迅速に回答をもらえた上に、一番聞きたかったことはバッチリ確認できましたし、ありがたいですね。

ロリポップ!のデータベース情報を確認

 早速ロリポップのユーザーページにログインし、データベース情報を確認します。左サイドメニューから『データベース』を選択することでサーバーとユーザー名が表示され、さらにパスワード確認ボタンをクリックすることでパスワードが確認できます。

DBサーバーである mysqlxxx.phy.lolipop.jp への直接接続はエラー

 ロリポップ!のデータベース画面で確認したサーバー、ユーザー名、パスワードをA5 SQL Mk2のデータベースサーバー情報として入力し、接続を試みましたが、「接続に失敗しました。 Cannot connect to server on host ‘mysql522.phy.lolipop.jp’: Connection timed out」のエラーが表示されました。やはり直接の接続は許可されてないようです。

SSH 接続にはスタンダードプラン以上への変更が必要

 左サイドメニューから「SSH」を選択すると、SSH 接続はスタンダードプランから必要となるため、プラン変更の説明が表示されます。今回は検証用の弊社アカウントですので、このままプラン変更を進めます。もしお客様のサーバーで同様のことを実施したいのであれば、当然ながらプラン変更についてご説明、納得して頂く必要があります。なお、プラン変更を一度行うとプランのダウングレードはできませんのでご注意ください。

ライトプランからスタンダードプランへのアップグレード

 指示に従ってプランのアップグレードを行ったところ、背景色が変わりました。スタンダードプランへの変更がうまくいったのでしょうか。と思ったらまだプラン変更中のようです。

 10分ほどで下記の画面に切り替わりました。ここからSSHを有効にします。

 こちらがSSHを有効にした後の画面です。表示されているSSH接続先のサーバー、アカウントとパスワードを控えておきます。

SSH クライアント(TeraTerm)からロリポップ!に接続する

 試しにTeraTearmなどのSSHクライアントから接続したところ、無事に接続できました。wgetも使えるようです。php や mysql クライアントも入っていました。

 まずはTeraTermからMySQLのサーバーに接続してみますが「ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option ‘secure_auth’ enabled)」が発生してしまいました。

 当座の対応として –skip-secure-auth をつければ接続は成功します。が、根本的な原因はDBが古い形式のパスワードハッシュを使っていることですので
ロリポップ!の公式の以下の手順にてパスワード形式を「old_password形式」から「native_password形式」に変更します。
https://lolipop.jp/support/faq/cgi/000795/

 これで接続に成功しました。WordPressのデータベースやレコードも確認できます。

A5:SQL Mk-2 からのSSHトンネル接続に失敗

 早速 A5:SQL Mk-2 からSSHトンネルを設定して接続を試みますが「Lost connection to MySQL server during query」が発生します。

 その後、HeidiSQLやMySQL Workbenchなどを使用して接続しますが「Lost connection to MySQL server during query」か「Lost connection to MySQL server at ‘handshake: reading inital communication packet’, system error: 0」が発生します。

 解決策を検索すると、アクセス許可関連の問題で my.cnf や /etc/hosts.allow を編集するといった情報が見つかりましたが、さすがにレンタルサーバーでそれらの情報を編集することはできません。(VPSではないですし、そもそも編集機能が存在していません)

 SSH クライアントからの接続ができていれば、DBツールからのSSHトンネル接続も大差ないと思っていたのですが、内部の挙動が違うのかもしれません。そのあたりは次回時間が許す際に調査したいと思います。当面は SSH クライアントから接続できれば、生SQLの実行やPHPを利用したコンバートツールは実行可能ですので、A5:SQL Mk-2でやりたかったことは一通りできるため、一旦調査を終了しました。