2013 – Потеряно соединение с MySQL сервером при ‘чтении начального пакета связи’, системная ошибка: 0 “Внутренняя ошибка/проверка (Не системная ошибка)”

Вопрос или проблема

У меня есть эти пользователи в MySQL

Пользователь Хост
debian-sys-maint localhost
mysql.session localhost
mysql.sys localhost
root localhost

Я хочу подключиться к нему удаленно с моего Mac через SSH

Я не могу подключиться. Я постоянно получаю

2013 – Утрата соединения с сервером MySQL при ‘чтении начального коммуникационного пакета’, системная ошибка: 0 “Внутренняя ошибка/проверка (Не системная ошибка)”

Я знаю, что если я добавлю эту запись ниже.

root %

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

У меня ничего не настроено в локальных брандмауэрах на моем сервере, но у меня есть правила сетевой безопасности в Digital Ocean.

Все правила настроены

введите описание изображения здесь

Поздний ответ, но у меня была та же проблема. Проблема заключалась в том, что я пытался подключиться к серверу mariadb с помощью клиента mysql (mysql-client-8.0). Использование клиента mariadb (1:10.6.11-0ubuntu0.22.04.1) решило эту проблему. Надеюсь, это поможет.

Ответ или решение

При возникновении ошибки "2013 – Потеряно соединение с сервером MySQL на этапе ‘чтения начального коммуникационного пакета’, системная ошибка: 0 ‘Внутренняя ошибка/проверка (не системная ошибка)’" при попытке удаленного подключения к MySQL-серверу, стоит обратить внимание на несколько ключевых моментов, которые помогут вам диагностировать и устранить проблему.

Причины возникновения ошибки

  1. Настройки доступа к пользователям: Ваша таблица пользователей MySQL показывает, что у вас есть только локальные пользователи, такие как root@localhost. Это означает, что для подключения извне этот пользователь не сможет пройти аутентификацию. Вы упомянули, что добавление записи root@% решает проблему, но это связано с низким уровнем безопасности. Лучше всего создать нового пользователя с ограниченными привилегиями для удаленного доступа.

  2. Конфигурация MySQL: Проверьте файл конфигурации MySQL (обычно my.cnf или my.ini) на предмет параметра bind-address. Если он установлен на 127.0.0.1, сервер будет слушать только локальные подключения. Измените его на 0.0.0.0 для разрешения удаленных подключений.

  3. Файрволы: Несмотря на то, что вы упомянули, что у вас нет локальных правил файрвола, проверьте настройку файрвола облачного провайдера (в вашем случае Digital Ocean). Убедитесь, что порт MySQL (обычно 3306) открыт для вашего IP-адреса или разрешен для подключения из определенных диапазонов.

  4. SSH-туннелирование: Хотя вы можете подключаться напрямую к MySQL, более безопасный подход — использовать SSH-туннелирование. Это позволяет зашифровать ваше соединение и избежать открытого доступа к MySQL.

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

Шаг 1: Создание пользователя с удаленным доступом

Создайте нового пользователя MySQL с правами доступа, которые вам нужны. Например:

CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Этот пользователь будет иметь доступ ко всем базам данных из любого места. Обязательно замените your_user и your_password на безопасные значения.

Шаг 2: Изменение конфигурации MySQL

Откройте файл конфигурации MySQL и измените bind-address:

bind-address = 0.0.0.0

Перезапустите MySQL для применения изменений:

sudo service mysql restart

Шаг 3: Настройка файрвола на Digital Ocean

Убедитесь, что на Digital Ocean открыт порт 3306 для IP-адреса вашего Mac. Если необходимо, настройте правила так, чтобы разрешить доступ к порту только для ваших IP-адресов.

Шаг 4: SSH-туннелирование

Вы можете создать туннель через SSH с помощью следующей команды, где user@your-server-ip — это ваш удаленный сервер:

ssh -L 3306:localhost:3306 user@your-server-ip

После этого вы можете подключиться к локально перенаправленному порту 3306 на вашем Mac с помощью клиента MySQL.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...