I have been banging my head against this error today on OSX Yosemite with MySQL 5.7 recently updated with Homebrew. Following suggestions on StackOverflow and elsewhere, I hunted around after my.cnf
files all of which specified bind-address=0.0.0.0
. I even removed and reinstalled MySQL following these instructions and then reinstalled using brew install mysql
. Still no remote connections allowed.
It wasn't until I ran ps -ax | grep mysql
and noticed that the bind address was being passed in the launch command (thus overriding any my.cnf
files) that I dug some more and found out that Homebrew binds MySQL to 127.0.0.1 by default.
Editing ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
to change --bind-address=127.0.0.1
to --bind-address=0.0.0.0
solved my problem (the latter should be changed to a specific IP address if this isn't just a development machine).
I feel this is a vital piece of information that was lacking from most of the resources I consulted so hopefully posting this here will help someone else!
EDIT: As LeandroCR indicated in the comments, running brew services restart mysql
will overwrite the plist file in LaunchAgents with the default one, leading to MySQL mysteriously refusing connections again. So better advice than what I originally wrote is the following:
- Edit
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
and replace --bind-address=127.0.0.1
with bind-address=*
or --bind-address=0.0.0.0
(see MySQL documentation on bind-address)
- Restart mysql using
brew services restart mysql
Then MySQL should continue to accept non-local connections from then on - until you reinstall it, presumably.
Edit (Sep 2019)
Timothy Zorn points out that this problem no longer occurs for MySQL 8.x installed and run via Homebrew, so my answer above, written in 2016, may only be relevant to 5.x.
ssh
is open in one tab, but otherwise not. I think the problem is that the database server process is paused or not running when I am not logged in to the remote server.