Я борюсь с этой проблемой уже больше года, и это действительно вызывает у меня головную боль.
Я часто сталкиваюсь с тем, что не могу подключиться к серверу MySQL через SequelPRO. Если я подключусь к серверу по ssh, я могу нормально использовать mysql, просматривать процессы и т. Д. Мое веб-приложение тоже работает нормально.
Когда я пытаюсь подключиться к базе данных MySQL по SSH через Sequel PRO, сразу появляется это сообщение:
Невозможно подключиться к хосту 127.0.0.1, или истекло время ожидания запроса. Убедитесь, что адрес правильный и у вас есть необходимые привилегии, или попробуйте увеличить время ожидания соединения (в настоящее время 10 секунд). MySQL сказал: потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 0
ЕДИНСТВЕННОЕ решение - перезагрузить сервер. Иногда я перезагружал сервер, но он все равно не работал. После нескольких перезагрузок работает. Но обычно это срабатывает каждый раз.
Как я подключаюсь:
Хост MySQL: 127.0.0.1 Имя пользователя: something Password: something Порт: 3306 SSH Host: server-ip SSH User: something SSH Key: путь к моему id_rsa Порт SSG: default / not-set
Любые идеи?
Моя версия Sequel Pro: v1.1, сборка 4499 Моя OSX: OS X El Capitan v 10.11
Сервер: Ubuntu 14.04.3 LTS (GNU / Linux 3.13.0-71-generic x86_64)
MySQL: версия 14.14 Distrib 5.7.10, для Linux (x86_64) с использованием оболочки EditLine
Немного выстрел в темноте, но я видел это раньше и сумел отладить его.
Хотя это настоящий причудливый край.
Если ваш clocksource установлен на jiffies, некоторые процессоры не синхронизируются друг с другом, что приводит к ситуации, когда время на одном процессоре отличается от времени на другом процессоре. Может быть разница всего в 1 секунду, чтобы вызвать проблему в mysql.
Вы можете проверить это, выполнив:
for i in $(seq 0 $(($(getconf _NPROCESSORS_ONLN)-1))); do taskset -c $i date & done
Каждая строка должна сообщать один и тот же результат, ни на секунду. Вам следует попробовать это несколько раз, чтобы убедиться, что вы просто не пересекли порог в 1 секунду во время теста.
Ошибка, с которой я столкнулся, заключалась в том, что один процессор отставал на 1 секунду от другого. Это привело к тому, что mysql запросил время, а затем снова сравнил время со следующим новым запросом (который был на расстоянии -1 секунды). Учитывая, что это неожиданно, оно будет переполнено, и mysql решил, что соединение на четыре миллиарда секунд старше, чем оно было.
Если это проблема, вам следует изменить источник тактовых импульсов на хосте с jiffies на tsc
, hpet
или acpi
и проблема должна исчезнуть.
Упоминание 127.0.0.1 звучит так, будто вы используете SSH-туннелирование особенность SequelPro.
Видеть Как надежно держать SSH-туннель открытым для решения этой проблемы.
Вы можете быть уверены, что эта проблема возникла, если в следующий раз вы отключите сеанс SSH от сервера, повторно подключитесь, и он сработает.
Похоже, у вас возникли проблемы с подключением через SSH или обслуживанием туннеля SSH, об этих ошибках обычно сообщают в /var/log/auth.log
. Вероятно, SequelPRO пытается использовать соединение, которое больше не доступно, застопорилось.
Вы также можете попробовать вручную настроить туннель SSH: http://www.sequelpro.com/docs/Set_up_an_SSH_Tunnel - если это работает, то это наверняка ошибка / проблема с SSH-соединением SequelPro.
Задайте в ~ / .ssh / config «ForwardAgent yes». Также grant all on db.* to 'user'@'127.0.0.1' identified by 'password'