brew是mac下一款非常不错的包管理工具,它有种类似debian/ubuntu系下的apt-get工具以及centos下的yum工具,可以查看我之前写的一篇关于brew使用的文章。
在mac上安装mysql可以说有多种方式,比如通过dmg程序包安装,程序源码编译安装,以及像brew等包管理工具安装,本文主要记录一下本人在mac下通过brew这款包管理工具安装mysql步骤以及遇到的问题。
安装mysql
$ brew install mysql
安装过程中会输出如下信息:
==> Downloading /bottles/mysql-5.7.13.el_capitan.bot
Already downloaded: /Users/sobird/Library/Caches/Homebrew/mysql-5.7.13.el_capitan.bottle.tar.gz
==> Pouring mysql-5.7.13.el_capitan.bottle.tar.gz
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation
To connect run:
mysql -uroot
To have launchd start mysql now and restart at login:
brew services start mysql
Or, if you don't want/need a background service you can just run:
mysql.server start
==> Summary
/usr/local/Cellar/mysql/5.7.13: 13,344 files, 445.0M
由上面的安装提示可知,要启动mysql服务,可以通过:
$ brew services start mysql
或通过命令
$ mysql.server start
还可以直接运行 mysqld 来启动 mysql服务。
话说今天早上我在用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,问题解决。