ウェブサイト

リモートでデータベースに接続する

Where to find your database credentials, why direct remote connections on port 3306 are refused, and how to connect a desktop tool through an SSH tunnel instead.

データベース認証情報をどこで見つけるか、ポート3306での直接リモート接続が拒否される理由、デスクトップツールをSSHトンネル経由で接続する方法について説明します。

KapsuleHostのデータベースを持つすべてのウェブホスティングサイトには、独自のデータベース、独自のデータベースユーザー、いつでも確認できる認証情報があります。ただし、インターネット経由で直接接続することはできません。これは意図的なものです。このガイドでは、認証情報、サポートされている2つの接続方法、およびデスクトップデータベースツールが必要とするトンネルの設定方法について説明します。

認証情報の確認

Websites に移動し、サイトをクリックして、Files をクリックし、Database をクリックします。

このページには5つの項目が表示されます:

フィールド
Host127.0.0.1
Port3306
Databaseデータベース名
Usernameデータベースユーザー
Passwordマスク表示、表示ボタンとコピーボタン付き

パスワードは1回限りの表示ではありません。必要なときにいつでも戻って読むことができるため、別途保存する必要はありません。

データベースサーバーはMariaDB 10.11で、MySQL互換です。これは1つの実用的な方法で重要です。最近のMySQLサーバーからエクスポートされたダンプには、MariaDBが認識しないコレーションが含まれている可能性があり、インポートは「unknown collation」エラーで失敗します。これが発生した場合は、utf8mb4_unicode_ciなどの広くサポートされているコレーションを使用して再エクスポートするか、インポート前にダンプファイル内で検索して置換してください。

KPanelのサイトのDatabase タブ

ホストが127.0.0.1である理由

127.0.0.1は「このマシン」を意味します。データベースサーバーはマシン自身の内部インターフェースでのみリッスンし、ポート3306もファイアウォールでインターネットに公開されていません。パネルでそれを開くための設定はなく、IPアロウリストもありません。

これは見落としではありません。インターネット向きのデータベースポートは、ホスティングで最も確実に悪用されるものの1つです。常にスキャンされ、接続するすべての人にバージョン情報を漏らし、1つの弱いパスワードでサイト全体が失われます。ポートを閉じておくことで、このカテゴリのリスク全体を排除できます。

したがって、サイトのパブリックIPアドレスとポート3306を使用する接続文字列は、どのプランでも、どこからでも常に失敗します。代わりに、サポートされている2つの接続方法があります。

オプション1: ブラウザのphpMyAdmin

クイック確認、編集、または小さなインポートまたはエクスポートに最適です。

Database ページで、Open phpMyAdmin をクリックします。サイト独自の認証情報で直接サインインされ、独自のデータベースのみが表示されます。

これを行うリンクは意図的に短命であり、エラーのように見えますが、実は違う方法で失敗します:

  • 60秒で有効期限が切れます。 表示されたらすぐにクリックしてください。
  • 1回だけ機能します。 戻って再度読み込むことはできません。新しいものを生成してください。
  • リクエスト元と同じブラウザと同じネットワークから開く必要があります。 リンクを別のデバイスにコピーしたり、途中で接続アドレスが変わったりした場合は、拒否されます。

「このリンクは既に使用されています」というメッセージまたはIPミスマッチに関するメッセージが表示される場合は、保護が機能しています。Database ページに戻り、ボタンをもう一度クリックしてください。

phpMyAdmin自体の操作については、phpMyAdmin の使用 を参照してください。

オプション2: デスクトップツール用のSSHトンネル

デスクトップクライアントを使用する場合は、これがサポートされているパスです。トンネルはサーバーへの暗号化接続を開き、ポートをマシンを通じて転送するため、クライアントはローカルデータベースのように見えるものに接続します。

最初に必要なもの

サイト上のSSHキー。パスワード認証は受け入れられないため、このステップはオプションではありません。

  1. Websites に移動し、サイト、FilesSSH Keys の順でクリックします。
  2. 既に使用している公開鍵を貼り付けるか、パネルから新しいキーペアを生成します。
  3. そのページに表示されているユーザー名をメモしておきます。これはサイトのシステムユーザーで、接続するときのユーザー名です。

パネルでキーを生成する場合、プライベートキーは1回だけ表示され、二度と表示されません。 直ちに保存し、自分だけが読める場所に保管してください。

キーがサイトに追加されるたびにメールが届きます。これは意図的です。到着したメールが自分からのものではない場合は、そのページから直ちにそれを取り消し、サイトがハッキングされた場合 を読んでください。

完全な手順については、SSHキーの追加 を参照してください。

SFTPタブで作成されたSFTPアカウントはトンネルでは機能しません。これらのアカウントはファイル転送のみで、シェルもポート転送もありません。トンネリングにはサイト独自のSSHユーザーとキーが必要です。SFTPアクセス を参照してください。

トンネルを開く

自分のマシンのターミナルから:

ssh -N -L 3307:127.0.0.1:3306 your-ssh-user@cp1-kapsule.kapsulehost.com

your-ssh-userをSSHキーズページのユーザー名に置き換えてください。詳細は次のとおりです:

  • -Nはコマンドを実行しない、トンネルを開いたままにするという意味です。
  • -L 3307:127.0.0.1:3306はマシンのポート3307をサーバーのポート3306に転送します。
  • ポート3307が使用されるのは、ローカルで実行されている可能性があるデータベースと競合しないようにするためです。

コマンドが正常に機能した場合、何も出力されません。これは正しいです。必要な限りターミナルウィンドウを開いたままにしておき、Ctrl+Cを押して閉じてください。

クライアントを接続する

トンネルが開いている状態で、データベースツールを以下に向けてください:

設定
Host127.0.0.1
Port3307
UsernameDatabase ページのデータベースユーザー名
PasswordDatabase ページのデータベースパスワード
Databaseデータベース名

分割を注意してください: SSH ユーザー名はサイトのシステムユーザーであり、データベース ユーザー名はDatabase ページからの別のユーザーです。これら2つを混同することが圧倒的に最も一般的な間違いです。

ほとんどのデスクトップクライアントには、「SSHトンネル経由で接続」という組み込みオプションもあり、これは別のターミナルなしで上記と同じことを行います。SSHホスト cp1-kapsule.kapsulehost.com、ポート22、SSHユーザー名、プライベートキーファイルを入力してから、上記のようにデータベースフィールドを入力します。

クライアント別の設定については、Database SSH Tunnel を参照してください。

サーバー上のコマンドライン

ターミナルに不安がない場合は、トンネルは必要ありません。SSHで接続してサーバーで直接作業してください:

ssh your-ssh-user@cp1-kapsule.kapsulehost.com
mysqldump -u DBUSER -p DBNAME > backup.sql

これはトンネルを通して大きなデータベースを引き出すよりもはるかに高速であり、危険な変更の前にダンプを手動で取得するための正しい方法です。WordPressの場合は、通常 WP-CLI の方がさらに優れています。

トラブルシューティング

自分のマシンからポート3306での「接続が拒否されました」。 予想通りです。上記を参照してください。トンネルを使用してください。

トンネルコマンドがパスワードを求めています。 キーが提供されていないか、インストールされていません。キーがSSHキーズページに存在することを確認し、-i /path/to/your/private/keyをコマンドに追加してください。

「許可が拒否されました (publickey)」。 ユーザー名が間違っているか、キーが間違っています。ユーザー名はSSHキーズページのユーザー名であり、Kapsuleログインメールではありません。

ポート3307の「アドレスは既に使用中」。 トンネルが既に開いているか、別のプロセスがそのポートを使用しています。別のものを閉じるか、3308などの別のローカルポートを選択してください。

トンネルは開きますがクライアントは接続できません。 クライアントが 127.0.0.1 と選択したローカルポート、ドメインではなく、を指していることを確認してください。

「ユーザーへのアクセスが拒否されました」。 SSHではなく、データベース認証情報です。Database ページから再度表示してコピーしてください。

インポートで「不明なコレーション」。 上記で説明しています。互換性のあるコレーションで再エクスポートしてください。

データベースクライアントで実行するすべての操作は直ちに実行され、取り消すことはできません。確認ステップはなく、ゴミ箱もありません。書き込みを実行する前にバックアップを取得してください。バックアップの取得 を参照してください。

関連ガイド

それでもお困りですか?

こちらまでメールでお問い合わせください support@kapsulehost.com またはKPanelでチャットを開いてください。

KPanel を開く
リモートでデータベースに接続する