brew是Mac下一款非常不错的包管理工具,它有种类似debian/ubuntu系下的apt-get工具以及centos下的yum工具,可以查看我之前写的一篇关于brew使用的文章

在mac上安装mysql可以说有多种方式,比如通过dmg程序包安装,程序源码编译安装,以及像brew等包管理工具安装,本文主要记录一下本人在mac下通过brew这款包管理工具安装mysql步骤以及遇到的问题。

安装MySQL

$ brew install mysql
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

To restart mysql after an upgrade:
  brew services restart mysql
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql/bin/mysqld_safe --datadir=/usr/local/var/mysql
==> Summary
🍺  /usr/local/Cellar/mysql/8.0.27: 304 files, 294MB
==> Caveats
==> mysql
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

To restart mysql after an upgrade:
  brew services restart mysql
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql/bin/mysqld_safe --datadir=/usr/local/var/mysql

输出上面信息表示安装完成。

基本设置

# 启动 MySQL
$ brew services start mysql
# 或通过下面命令
$ mysql.server start

Starting MySQL
.. SUCCESS! 
brew services ls

Name    Status  User   File
mysql   started sobird ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

FAQ

用phpmyadmin登陆时,报错:2002 无法登录 MySQL 服务器

经排查发现是:/tmp/mysql.sock 这个文件丢失了,而phpmyadmin和MySQL客户端连接MySQL服务都需要通过mysql.scok进行连接。所以我在使用命令mysql.server start 启动的时候报如下错误:

connect mysqld faild ,/tmp/mysql.sock can't find

那么到底是什么原因导致出现的这个问题呢?
经过从网络上各种搜索查看,应该确定是下面的原因导致的,出现这个问题,是因为我昨晚把mac带回家,连接了家里的wifi,然后今天早上就连不上mysql了。同时发现在/usr/local/val/mysql 下面有两个xxx.err文件,一个是 sobird.xxx.err, 一个是lenovo-pc.xxx.err,同时结合网上的文章,可以确定出线这个问题的主要原因应该是:在我连接家里的wifi网络时,我的机器名(hostname)被修改为lenovo-pcxxx.

而更改机器名导致mysqld_safe判断是否已经运行,去找的是newhostname.pid文件,但已经运行的mysqld生成的是oldhostname.pid, 肯定找不到newhostname.pid,所以mysqld_safe收拾一下(清理了mysql.sock),然后去重启,但是ibdata需要lock,它lock不了,还是起不了,但是老的mysql.sock就消失。

解决方法

重新设置mac的hostname sudo scutil --set HostName sobird。然后删除掉/usr/local/var/mysql目录下的所有xxx.err xxx.pid文件,然后启动MySQL,问题解决。