无法远程访问在 Mac OS X 上运行的 MySQL 服务器

che*_*kha 12 mysql-5 mac-os-x errors

我的工作计算机上运行着一个 MySQL 服务器,它运行 Mac OS X Maverick。我想从也有 Mac OS Maverick 的家用电脑访问它。

从终端,如果在 1 个选项卡中,我 ssh 进入我的工作计算机并让 ssh 会话坐在那里而不会空闲,然后在另一个选项卡上,我可以访问 MySQL 服务器。

但是,如果没有 ssh 会话运行,我将收到以下错误

错误 2003 (HY000):无法连接到“SERVER_IP_ADDRESS”上的 MySQL 服务器 (60)

我试图my.cnf通过注释掉绑定地址或将其分配给来修改服务器上的文件,0.0.0.0但它不起作用。

为什么会这样?如何配置服务器以便它允许远程访问而无需在客户端上运行 ssh?有人可以帮忙吗?

Emm*_*ows 20

我今天在 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 再次神秘地拒绝连接。因此,比我最初写的更好的建议如下:

  1. 编辑/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist并替换--bind-address=127.0.0.1bind-address=*--bind-address=0.0.0.0请参阅有关绑定地址的 MySQL 文档
  2. 使用重启mysql brew services restart mysql

然后 MySQL 应该从那时起继续接受非本地连接 - 直到你重新安装它,大概。

编辑(2019 年 9 月) Timothy Zorn指出,通过 Homebrew 安装和运行的 MySQL 8.x 不再出现此问题,所以我上面的回答写于 2016 年,可能只与 5.x 相关。

  • 另一个提示:如果您正在运行 $ brew services restart mysql 它每次都会从 LaunchAgents 清除 plist 文件。如果您想坚持该更改,请编辑 /usr/local/Cellar/mysql/&lt;yourversion&gt;/homebrew.mxcl.mysql.plist - 也非常感谢艾玛!!! (3认同)

小智 8

运行locate my.cnf找到文件/usr/local/etc/my.cnf

  1. 编辑该文件并设置 bind-address = 0.0.0.0
  2. 重启mysql: brew services restart mysql


Abd*_*naf 5

我希望您需要使用'%'通配符创建用于远程访问的用户并授予对 DB 的权限。

第1步:

在 my.cnf ( https://serverfault.com/questions/9107/how-do-i-find-where-mysql-is-loading-its-config-from ) 中注释掉你的绑定地址

# bind-address        = xxx.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)

并重新启动 MySQL 服务器。

第2步:

然后您需要授予用户远程访问权限

GRANT ALL ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypass';
Run Code Online (Sandbox Code Playgroud)

请查看如何启用远程连接。