Вопрос или проблема
У меня есть самостоятельно хостируемый сервер, который я использую для некоторых личных проектов, таких как вебсайты, приложения и так далее. Я пытаюсь внедрить базу данных (mariadb) и на данный момент пытаюсь разрешить удаленное подключение к ней. Я дам вам полное описание моих шагов и проблемы, с которой я столкнулся, в надежде, что мы сможем ее решить. С учетом этого я сделал следующее:
Я включил переадресацию портов на моем маршрутизаторе, выделив порт 3306 для базы данных. Я уже сделал это для 80, 22 и 443, и это работает отлично правила переадресации портов 🙂
Второе, что я сделал, это изменил настройки брандмауэра для порта 3306:
sudo ufw status 3306 (v6) ALLOW Anywhere (v6) 3306/tcp ALLOW Anywhere 3306 ALLOW Anywhere
Затем я создал пользователя базы данных для удаленного подключения: привилегии пользователя:
GRANT ALL PRIVILEGES ON . TO remoteDefaultUser@%
(я изменю привилегии позже, это было сделано только для начала)
Также у меня есть этот пользователь локально: remoteDefaultUser | % remoteDefaultUser | localhost
Теперь, когда это готово, я открыл туннель Cloudflare к моему серверу и сопоставил порт localhost:3366 своего клиента с этим туннелем. [сторона клиента]
cloudflared access tcp --hostname mysql.mydomain.com --url localhost:3366 INF Start Websocket listener host=localhost:3366
Теперь я пытаюсь подключиться к своей базе данных из MySql workbench Подключение MySql
Я получаю следующую ошибку: ошибка
Я использую mysql_native_password и я уверен, что этот плагин установлен на моем сервере: show plugins; выдало:
Name | Status | Type | Library | License mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL
Мой пользователь (remoteDefaultUser установлен на использование родного пароля): плагины
У меня есть ssl на моей базе данных, но я не требую его, так как: require_secure_transport=OFF
Мой mariadb настроен на прием удаленного доступа: (из 50-server.cnf) bind-address: 0.0.0.0
Мой сервер работает на debian 12, 32-битной версии, а мой клиент (MySql workbench) находится на Windows 10 в текущей конфигурации.
Теперь я не знаю, как исправить эту проблему. Мне не удалось удачно найти решение, и у меня мало знаний о сетях. На самом деле, я учусь программированию и только начал самостоятельно изучать сети. В конечном итоге мой план – разработать вебсайт, а также мобильное и настольное приложение, надежно подключенное к одной и той же базе данных. Я считаю, что такой практический подход – лучший способ учиться.
Мне также интересно, является ли это лучшим способом надежного подключения к удаленной базе данных.
Пока я раз за разом удаляю туннели и создаю новые, изменяю привилегии пользователей и ищу подсказки в интернете. Это руководство, которое я использовал для создания туннеля: https://developers.cloudflare.com/cloudflare-one/tutorials/mysql-network-policy/#:~:text=on%20your%20account-,Create%20a%20Cloudflare%20Tunnel,Select%20Create%20a%20tunnel.
Если вам нужна какая-либо дополнительная информация, я с радостью ее предоставлю.
Спасибо за ваше время и помощь заранее!
Ответ или решение
Решение проблемы с удаленным подключением к базе данных через Cloudflare Tunnel
Введение
Вы настроили сервер с базой данных MariaDB для удаленного подключения, однако столкнулись с ошибкой, связанной с загрузкой плагина аутентификации при использовании Cloudflare Tunnel. Давайте разберем ваш процесс настройки и выявим возможные причины проблемы, а также предложим пути ее решения.
Проверка сетевой конфигурации
-
Порт и брандмауэр:
- Вы уже правильно настроили переадресацию порта 3306 на вашем роутере и открыли этот порт в настройках брандмауэра с помощью команды
sudo ufw status
. Однако убедитесь, что брандмауэр также правильно настроен для обработки TCP-трафика на этом порту:sudo ufw allow 3306/tcp
- Вы уже правильно настроили переадресацию порта 3306 на вашем роутере и открыли этот порт в настройках брандмауэра с помощью команды
-
Настройка MySQL/MariaDB:
- Конфигурационный файл 50-server.cnf с
bind-address = 0.0.0.0
указывает серверу принимать подключения на всех доступных IP-адресах. Это правильный подход для разрешения удаленного доступа.
- Конфигурационный файл 50-server.cnf с
Настройка пользователя для удаленного доступа
Ваши команды GRANT
и данные о пользователе указывают на правильное создание учетной записи. Убедитесь, что вы также перезагрузили привилегии:
FLUSH PRIVILEGES;
Проверка на наличие плагина mysql_native_password
также подтверждает, что он установлен. Однако важно проверить, действительно ли ваш пользователь настроен на использование этого плагина.
Cloudflare Tunnel и ошибки подключения
Ошибка подключения, связанная с загрузкой плагина аутентификации, может быть вызвана следующими причинами:
-
Неправильная настройка Cloudflare Tunnel:
- Убедитесь, что команда для создания туннеля точно указывает на localhost и порт, который вы используете для MariaDB. Возможно, стоит попробовать запускать Cloudflare Tunnel с параметрами отладки, чтобы увидеть более подробную информацию о том, что происходит.
-
Проблема с клиентской частью:
- Если вы используете MySQL Workbench, убедитесь, что вы прописали правильный хост (например,
mysql.mydomain.com
) и что установлен правильный порт (3306). При этом попробуйте временно отключить любые параметры SSL для упрощения диагностики.
- Если вы используете MySQL Workbench, убедитесь, что вы прописали правильный хост (например,
-
Опции подключения:
- Проверьте настройки MySQL Workbench на предмет метода аутентификации. Вы можете попробовать вручную выбрать
mysql_native_password
в параметрах подключения.
- Проверьте настройки MySQL Workbench на предмет метода аутентификации. Вы можете попробовать вручную выбрать
Общие рекомендации по безопасности
Поскольку вы планируете разрабатывать веб-сайт и приложения, важно задать правильный уровень безопасности:
- Использование VPN: Рассмотрите возможность использования VPN между вашей клиентской машиной и сервером, поскольку это обеспечит дополнительный уровень безопасности.
- Изоляция базы данных: Подумайте о том, чтобы ограничить доступ к базе данных только определенными IP-адресами или применять другие меры безопасности.
- Резервные копии: Регулярно делайте резервные копии своей базы данных.
Заключение
При решении вашей проблемы с удаленным подключением к базе данных MariaDB через Cloudflare Tunnel рекомендуем проверять конфигурацию на каждом этапе и действительно убедиться в корректности настройками. Если у вас остались вопросы или необходима дополнительная помощь, пожалуйста, не стесняйтесь задавать их. Желаем вам удачи в ваших проектах и обучении в области программирования и сетевых технологий!