Brew安装的MySQL无法远程的登陆
背景
macOS 10.12.4 操作系统
Homebrew 软件包管理器
MySQL 5.7.17
问题
使用Brew安装Mysql, 启动,本地可以正常登陆,无法远程登陆。
账户是的Host已经设置为‘%’
最后发现问题,3306端口再能在ip 127.0.0.1 上启动
运行命令
netstat -an | grep 3306
结果为:
tcp4 0 0 127.0.0.1.3306 *.* LISTEN
说明 3306端口 只能在 127.0.0.1 IP上进行监听
登陆mysql后 运行SQL
show variables like '%address%'
结果为
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| bind_address | 127.0.0.1 |
+---------------+-----------+
说明是mysql中绑定了IP地址
解决历程
上网查询各种资料, 都是让修改mysql的配置文件 my.cnf, 把 bind-address="127.0.0.1" 这一项注释掉
如果不知道my.cnf的位置在哪,可以运行命令
mysql --help | grep my.cnf
但是,打开my.cnf后并未发现 bind-address 这一项,自己手动加上 bind-address="0.0.0.0" ,重启mysql,仍然能远程登录。
难道my.cnf 中的配置不起作用?
最终解决
并不是my.cnf中的配置不起作用,是因为我们的mysql使用brew安装的, 还存在一个brew独有的优先级更高的xml格式的配置
打开文件 /usr/local/Cellar/mysql/5.7.17/homebrew.mxcl.mysql.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>homebrew.mxcl.mysql</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/mysql/bin/mysqld_safe</string>
<string>--bind-address=127.0.0.1</string>
<string>--datadir=/usr/local/var/mysql</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/usr/local/var/mysql</string>
</dict>
</plist>
~
其中有一行 <string>--bind-address=127.0.0.1</string>
,把这一行删掉,或者把 127.0.0.1 换成 0.0.0.0
重启mysql, 可以远程登录, 大功告成
(完)
找了好久,终于找到了