Как разрешить безопасные удаленные подключения к локальной базе данных MySQL с использованием Nginx? - PullRequest
0 голосов
/ 17 апреля 2020

Открытие порта по умолчанию 3306 для внешнего мира - это то, чего я бы хотел избежать, если это возможно. У нас Nginx работает для целей обратного прокси для других приложений. Целью здесь является безопасный доступ к базам данных MySQL с такими клиентами, как MySQL Workbench, из-за пределов локальной сети. Сервер MySQL работает на виртуальной машине Debian (Linux).

Я настроил серверный блок, как описано ниже. Подключение к mysql .domain.com, порт 80 с пользователем, не являющимся root в MySQL Workbench, приводит к сбою.

Блок сервера:

server {

    server_name mysql.domain.com;

    location / {
        proxy_pass http://localhost:3306/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}

Ошибка сообщение:

Failed to Connect to MySQL at mysql.domain.com:80 with user non-root. 
Lost connection to MySQL at 'waiting for initial communication packet', system error: 10060

1 Ответ

1 голос
/ 17 апреля 2020

Цель здесь - получить доступ к базам данных MySQL с такими клиентами, как MySQL Workbench, вне локальной сети

Все современные MySQL GUI клиенты поддерживают S SH туннелирование. Это наиболее безопасный подход для подключения и требует нулевой конфигурации на стороне сервера: если вы можете подключиться через S SH, то вы можете подключиться к MySQL на этом хосте.

В MySQL Workbench, при создании соединения выберите «Стандартный TCP / IP через S SH» в качестве метода соединения, затем заполните S SH сведения о соединении и MySQL сведения о соединении. Ключевым моментом является установка MySQL server как 127.0.0.1, поскольку вы обычно хотите подключиться к экземпляру MySQL, который работает на компьютере, на котором вы S SH. Вот и все, что нужно.

...