铭哥和佩佩的博客

铭哥和佩佩的博客分享Python、PHP、JavaScript、HTML5、CSS3等各种知识

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, 可以远程登录, 大功告成

(完)


仅有一条评论

  1. 找了好久,终于找到了

添加新评论