Сайты

Удаленное подключение к вашей базе данных

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 с базой данных получает собственную базу данных, собственного пользователя базы данных и учётные данные, которые вы можете прочитать в любой момент. То, что вы не можете сделать, это подключиться к ней напрямую через интернет, и это сделано намеренно. Это руководство охватывает учётные данные, два поддерживаемых способа подключения и способ установки туннеля, необходимого настольным инструментам баз данных.

Поиск ваших учётных данных

Перейдите на Websites, нажмите на сайт, затем Files, затем Database.

На странице отображаются пять элементов:

ПолеЗначение
Host127.0.0.1
Port3306
Databaseимя вашей базы данных
Usernameваш пользователь базы данных
Passwordскрыт, с кнопкой открытия и кнопкой копирования

Пароль не является одноразовым раскрытием. Вы можете вернуться и прочитать его в любой момент, когда он вам понадобится, поэтому нет необходимости хранить его отдельно.

Сервер баз данных использует MariaDB 10.11, который совместим с MySQL. Это имеет значение одним практическим способом: дамп, экспортированный с недавнего сервера MySQL, может содержать параметры сортировки, которые MariaDB не распознаёт, и импорт завершится с ошибкой "unknown collation". Если это произойдёт, повторно экспортируйте с использованием широко совместимого параметра сортировки, такого как utf8mb4_unicode_ci, или найдите и замените его в файле дампа перед импортом.

Вкладка Database для сайта в KPanel

Почему Host установлен как 127.0.0.1

127.0.0.1 означает "эта машина". Сервер баз данных прослушивает только внутренний интерфейс машины, и порт 3306 также не открыт в интернет на брандмауэре. В панели нет параметра для его открытия, и для него нет списка разрешённых IP-адресов.

Это не является недосмотром. Открытый в интернет порт базы данных это одна из наиболее постоянно эксплуатируемых вещей в хостинге: её сканируют постоянно, она раскрывает информацию о версии любому, кто подключается, и один слабый пароль лишает вас всего сайта. Держание его закрытым устраняет всю эту категорию риска.

Поэтому строка подключения, использующая общедоступный IP-адрес вашего сайта и порт 3306, всегда будет неудачной, откуда угодно, на любом плане. Вместо этого поддерживаются два способа подключения.

Вариант 1: phpMyAdmin в браузере

Проще всего для быстрого просмотра, редактирования или небольшого импорта или экспорта.

На странице Database нажмите Open phpMyAdmin. Вы автоматически входите с учётными данными вашего сайта и видите только свои собственные базы данных.

Ссылка, которая это делает, намеренно имеет короткое время жизни, и она не работает способами, которые выглядят как ошибки, но ими не являются:

  • Она истекает через 60 секунд. Нажмите на неё как можно скорее после её появления.
  • Она работает один раз. Возврат и перезагрузка не будут работать; создайте новую.
  • Она должна быть открыта из того же браузера и той же сети, из которой вы её запросили. Если вы скопируете ссылку на другое устройство или ваше соединение изменит адрес в процессе, это будет отклонено.

Если вы видите сообщение "This link has already been used" или сообщение о несовпадении IP, это срабатывает защита. Вернитесь на страницу Database и снова нажмите кнопку.

Для работы с phpMyAdmin см. Использование phpMyAdmin.

Вариант 2: SSH туннель для настольных инструментов

Если вы хотите использовать настольный клиент, это поддерживаемый путь. Туннель открывает зашифрованное соединение с сервером и перенаправляет порт на вашей собственной машине через него, поэтому ваш клиент подключается к тому, что выглядит как локальная база данных.

Что вам нужно сначала

SSH ключ на сайте. Аутентификация по паролю не поддерживается, поэтому этот шаг не является необязательным.

  1. Перейдите на Websites, сайт, Files, затем SSH Keys.
  2. Либо вставьте открытый ключ, который вы уже используете, либо создайте новую пару ключей из панели.
  3. Обратите внимание на имя пользователя, показанное на этой странице. Это системный пользователь вашего сайта, и это то, под чем вы подключаетесь.

Если вы создаёте ключ в панели, закрытый ключ отображается один раз и никогда больше. Сохраните его немедленно и храните где-нибудь, где только вы можете его прочитать.

Вы также получите письмо по электронной почте каждый раз, когда к вашему сайту добавляется ключ. Это сделано намеренно. Если оно пришло и это были не вы, немедленно отозовите его на этой странице и прочитайте Если ваш сайт взломан.

Полное описание см. в Добавление 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 Keys. Разбивая это:

  • -N означает не запускать команду, просто держать туннель открытым.
  • -L 3307:127.0.0.1:3306 перенаправляет порт 3307 на вашей машине на порт 3306 на сервере.
  • Порт 3307 используется вместо 3306, чтобы он не конфликтовал с базой данных, которая может работать локально.

Команда ничего не печатает, когда работает. Это правильно. Оставьте окно терминала открытым столько, сколько вам нужно соединение, и нажмите Ctrl+C для его закрытия.

Подключение вашего клиента

С открытым туннелем укажите в инструменте базы данных:

ПараметрЗначение
Host127.0.0.1
Port3307
Usernameимя пользователя базы данных со страницы Database
Passwordпароль базы данных со страницы Database
Databaseимя вашей базы данных

Обратите внимание на разделение: имя пользователя SSH это системный пользователь вашего сайта, а имя пользователя database это другое имя со страницы Database. Путанница в этих двух это с большим отрывом самая частая ошибка здесь.

Большинство настольных клиентов также имеют встроенный параметр "connect over SSH tunnel", который делает именно это без отдельного терминала. Заполните 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 обычно лучше.

Решение проблем

"Connection refused" на порту 3306 с вашей машины. Ожидаемо. См. выше. Используйте туннель.

Команда туннеля запрашивает пароль. Ваш ключ не предлагается или не установлен. Проверьте, находится ли ключ на странице SSH Keys и добавьте -i /path/to/your/private/key к команде.

"Permission denied (publickey)". Неправильное имя пользователя или неправильный ключ. Имя пользователя это то, что на странице SSH Keys, не адрес электронной почты вашего логина Kapsule.

"Address already in use" для порта 3307. Туннель уже открыт или что-то ещё использует этот порт. Закройте другой или выберите другой локальный порт, например 3308.

Туннель открывается, но клиент не может подключиться. Убедитесь, что ваш клиент указывает на 127.0.0.1 и ваш выбранный локальный порт, не на ваш домен.

"Access denied for user". Учётные данные базы данных, не SSH. Снова раскройте и скопируйте их со страницы Database.

"Unknown collation" при импорте. Описано выше. Повторно экспортируйте с совместимым параметром сортировки.

Всё, что вы делаете в клиенте базы данных, происходит немедленно и не может быть отменено. Нет шага подтверждения и нет корзины. Сделайте резервную копию перед запуском чего-либо, что записывает данные. См. Создание резервной копии.

Связанные руководства

Вам всё ещё нужна помощь?

Напишите нам на support@kapsulehost.com или откройте чат в KPanel.

Открыть KPanel
Удаленное подключение к вашей базе данных