今天,在OSX Yosemite上,我用最新的Homebrew更新的MySQL 5.7来解决这个错误,我对此一直心存感激。遵循有关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
将使用默认文件覆盖LaunchAgents中的plist文件,从而导致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文档)
- 使用重启mysql
brew services restart mysql
然后,MySQL从那时起应该继续接受非本地连接-大概在重新安装它之前。
编辑(2019年9月)
Timothy Zorn指出,通过Homebrew安装并运行的MySQL 8.x不再会出现此问题,因此我上面写于2016年的答案可能仅与5.x有关。
ssh
在一个选项卡中打开时可以连接到数据库,但否则无法连接。我认为问题是当我未登录到远程服务器时,数据库服务器进程已暂停或未运行。