По умолчанию сервер 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:
-
Запустите Putty и введите IP-адрес сервера в поле
Host name (or IP address)
: -
В меню «
Connection
развернитеSSH
и выберите «Tunnels
. Введите3306
в полеSource Port
и127.0.0.1:3306
в полеDestination
:Нажмите кнопку «
Add
, чтобы добавить туннель. -
Вернитесь на страницу
Session
чтобы сохранить настройки, чтобы не вводить их снова.Введите имя сеанса в поле «
Saved Session
и нажмите кнопку «Save
. -
Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку «
Open
.Появится новое окно с запросом вашего имени пользователя и пароля. После ввода имени пользователя и пароля вы войдете на сервер и создадите туннель SSH.
Настройка аутентификации с открытым ключом позволит вам подключаться к серверу без ввода пароля.
Теперь вы можете подключиться к удаленной базе данных с помощью локального клиента MySQL.
Например, если вы используете HeidiSQL, введите 127.0.0.1
в поле Hostname / IP
а имя пользователя и пароль MySQL в поля User
и Password
:
Выводы
MySQL, самый популярный сервер баз данных с открытым исходным кодом, прослушивает входящие соединения только на localhost. Создание SSH-туннеля позволяет вам безопасно подключаться к удаленному серверу MySQL с вашего локального клиента.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.