Я бился головой об этой ошибке сегодня на OSX Yosemite с MySQL 5.7, недавно обновленной с Homebrew. Следуя предложениям по StackOverflow и в других местах, я искал my.cnfфайлы, все из которых были указаны bind-address=0.0.0.0. Я даже удалил и переустановил MySQL, следуя этим инструкциям, а затем переустановил, используя brew install mysql. Все еще никакие удаленные соединения не позволены.
Только когда я запустился ps -ax | grep mysqlи заметил, что в команде запуска передавался адрес привязки (переопределяя все my.cnfфайлы), я выкопал еще немного и обнаружил, что Homebrew по умолчанию привязывает MySQL к 127.0.0.1 .
Редактирование, ~/Library/LaunchAgents/homebrew.mxcl.mysql.plistчтобы изменить, --bind-address=127.0.0.1чтобы --bind-address=0.0.0.0решить мою проблему (последний должен быть изменен на определенный IP-адрес, если это не просто машина разработки).
Я чувствую, что это жизненно важная информация, которой не хватало в большинстве ресурсов, с которыми я консультировался, так что, надеюсь, размещение этого здесь поможет кому-то еще!
РЕДАКТИРОВАТЬ: Как LeandroCR указал в комментариях, запуск brew services restart mysqlперезапишет plist-файл в LaunchAgents с файлом по умолчанию, что приведет к таинственному отказу MySQL в соединениях. Так что лучший совет, чем то, что я изначально написал, следующий:
- Изменить
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plistи заменить --bind-address=127.0.0.1на bind-address=*или --bind-address=0.0.0.0( см. Документацию MySQL по bind-адресу )
- Перезапустите MySQL, используя
brew services restart mysql
Затем MySQL должен продолжать принимать нелокальные соединения с этого момента - до тех пор, пока вы, вероятно, не переустановите его.
Редактировать (сентябрь 2019)
Тимоти Зорн отмечает, что эта проблема больше не возникает для MySQL 8.x, установленного и запущенного через Homebrew, поэтому мой ответ выше, написанный в 2016 году, может относиться только к 5.x.
sshоткрыт в одной вкладке, но в противном случае нет. Я думаю, что проблема в том, что процесс сервера базы данных приостановлен или не работает, когда я не вошел на удаленный сервер.