Как подключиться к MySQL через SSH-туннель

По умолчанию сервер MySQL прослушивает только localhost, что означает, что к нему могут получить доступ только приложения, работающие на том же хосте.

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

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

В этом руководстве мы объясним, как создать туннель SSH и подключиться к серверу MySQL с удаленных клиентов. Те же инструкции применимы и для MariaDB.

Подготовка

  • Клиент SSH.
  • SSH-доступ к системе, в которой работает сервер MySQL.

Создайте SSH-туннель в Linux и macOS

Клиент ssh предустановлен в большинстве систем на базе Linux и Unix.

Если вы используете Linux или macOS в качестве операционной системы, вы можете создать туннель SSH, используя следующую команду:

ssh -N -L 3336:127.0.0.1:3306 [USER]@[SERVER_IP]

Используются следующие параметры:

  • -N — Указывает SSH не выполнять удаленную команду.
  • -L 3336:127.0.0.1:3306 — Создает переадресацию локального порта. Локальный порт ( 3306 ), то IP — назначения ( 127.0.0.1 ) и удаленный порт ( 3306 ) разделены двоеточием ( : ).
  • [USER]@[SERVER_IP] — удаленный пользователь SSH и IP-адрес сервера.
  • Чтобы запустить команду в фоновом режиме, используйте параметр -f .
  • Если SSH-сервер прослушивает порт, отличный от 22 (по умолчанию), укажите порт с помощью параметра -p [PORT_NUMBER] .

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

Теперь вы можете указать клиенту MySQL на локальном компьютере адрес 127.0.0.1:3336 ввести учетные данные для входа в удаленную базу данных и получить доступ к серверу MySQL.

Например, чтобы подключиться к серверу MySQL с помощью клиента mysql из командной строки, вы должны ввести:

mysql -u MYSQL_USER -p -h 127.0.0.1

Где MYSQL_USER — это удаленный пользователь MySQL, имеющий права доступа к базе данных.

При появлении запроса введите пароль пользователя MySQL.

Чтобы завершить туннель SSH, введите CTRL+C в консоли, на которой работает клиент ssh.

Создайте туннель SSH в Windows

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

Выполните следующие шаги, чтобы создать SSH-туннель к серверу MySQL с помощью PuTTY:

  1. Запустите Putty и введите IP-адрес сервера в поле Host name (or IP address) :

  2. В меню « Connection разверните SSH и выберите « Tunnels . Введите 3306 в поле Source Port и 127.0.0.1:3306 в поле Destination :

    Нажмите кнопку « Add , чтобы добавить туннель.

  3. Вернитесь на страницу Session чтобы сохранить настройки, чтобы не вводить их снова.

    Введите имя сеанса в поле « Saved Session и нажмите кнопку « Save .

  4. Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку « Open .

    Появится новое окно с запросом вашего имени пользователя и пароля. После ввода имени пользователя и пароля вы войдете на сервер и создадите туннель SSH.

Настройка аутентификации с открытым ключом позволит вам подключаться к серверу без ввода пароля.

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

Например, если вы используете HeidiSQL, введите 127.0.0.1 в поле Hostname / IP а имя пользователя и пароль MySQL в поля User и Password :

Выводы

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

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Оставьте комментарий