ウェブサイト
リモートでデータベースに接続する
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つの項目が表示されます:
| フィールド | 値 |
|---|---|
| Host | 127.0.0.1 |
| Port | 3306 |
| Database | データベース名 |
| Username | データベースユーザー |
| Password | マスク表示、表示ボタンとコピーボタン付き |
パスワードは1回限りの表示ではありません。必要なときにいつでも戻って読むことができるため、別途保存する必要はありません。
データベースサーバーはMariaDB 10.11で、MySQL互換です。これは1つの実用的な方法で重要です。最近のMySQLサーバーからエクスポートされたダンプには、MariaDBが認識しないコレーションが含まれている可能性があり、インポートは「unknown collation」エラーで失敗します。これが発生した場合は、utf8mb4_unicode_ciなどの広くサポートされているコレーションを使用して再エクスポートするか、インポート前にダンプファイル内で検索して置換してください。

ホストが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キー。パスワード認証は受け入れられないため、このステップはオプションではありません。
- Websites に移動し、サイト、Files、SSH Keys の順でクリックします。
- 既に使用している公開鍵を貼り付けるか、パネルから新しいキーペアを生成します。
- そのページに表示されているユーザー名をメモしておきます。これはサイトのシステムユーザーで、接続するときのユーザー名です。
パネルでキーを生成する場合、プライベートキーは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を押して閉じてください。
クライアントを接続する
トンネルが開いている状態で、データベースツールを以下に向けてください:
| 設定 | 値 |
|---|---|
| Host | 127.0.0.1 |
| Port | 3307 |
| Username | Database ページのデータベースユーザー名 |
| Password | Database ページのデータベースパスワード |
| 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 ページから再度表示してコピーしてください。
インポートで「不明なコレーション」。 上記で説明しています。互換性のあるコレーションで再エクスポートしてください。
データベースクライアントで実行するすべての操作は直ちに実行され、取り消すことはできません。確認ステップはなく、ゴミ箱もありません。書き込みを実行する前にバックアップを取得してください。バックアップの取得 を参照してください。