Очень часто для администрирования базы данных MySQL необходимо подключаться к БД через создание SSH туннеля. Например можно использовать популярную программу «Heidisql». Которая позволяет просматривать таблицы, выполнять некоторые процедуры и в целом удобно работать с БД.
Те кто сталкивается с настройкой подключения к базе через SSH туннель наверняка могли получать ошибку во время подключения, примерно следующего содержимого «Handshake reading initial communication packet …..» или «Lost connection to MySQL server at ‘handshake: reading initial communication packet’, system error: 0».
Решение проблемы очень простое: (Чаще всего это актуально для Centos)
— Добавить настройку в файл сервера: /etc/ssh/sshd_conf
1 2 3 |
AllowTcpForwarding yes |
По умолчанию на Ubuntu подобных системах этот параметр итак имеет значение yes, но на некоторых системах вроде Centos — этот параметр чаще всего имеет значение no
После этого перезапустить демона sshd
Другое решение (на пример в Ubuntu на хостингах VPS)
Такое решение актуально для автоматически устанавливаемых VPS на хостинге Beget
Сначало проверить, а слушает ли MySQL свой порт 3306
1 2 3 |
netstat -ntlp | grep 3306 |
Эта команда должна вывести хоть что нибудь. Если вывод пустой, тогда это наш случай и вам нужно найти в конфигах mysql строчку
skip_networking = 1 в секции [mysqld]
и просто закоментировать её
Далее перезапустить службу mysql
1 2 3 |
service mysql restart |
После этого mysql сервер начнёт слушать порт по умолчанию 3306
Обратите внимание, что параметр может быть в дополнительных конфигурационных файлах, а не в основном.