mysql
在启动时,如果出错,往往出错信息量较少。这使得我们无法准确的找到出错的信息点。
笔者由阿里云自定义镜像安装FREEBSD系统后,启动mysql
出现了ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
错误。表面上看,是说连接不到/tmp/mysql.sock
,实际上,是由于mysql-server
没有成功启动,进而导致了/tmp/mysql.sock
未成功生成。
排查mysql-server
mysql-server
安装后,其安装的位置为 /usr/local/etc/rc.d
, 我们进入其文件夹,并执行 ./mysql-server start
, 发生如下错误提示:./mysql-server: WARNING: failed precmd routine for mysql
。
这说明,mysql-server
的确没有成功启动,报了错,但错误信息太宽泛,没有实际的指导意义。
mysql-server的安装位置:
https://dev.mysql.com/doc/ref…
输出报错具体信息
编辑 mysql-server
这个文件$ee mysql-server
注意需要root权限
然后找到下面的部分,并在/dev/null 2>/dev/null
及2>/dev/null
前加入#
。
mysql_create_auth_tables()
{
...
eval $mysql_install_db $mysql_install_db_args # >/dev/null 2>/dev/null
...
}
mysql_prestart()
{
...
if checkyesno mysql_limits; then
eval `/usr/bin/limits ${mysql_limits_args}` # 2>/dev/null
else
return 0
fi
...
}
查看启动报错
此时,我们再次执行./mysql-server start
将会看到具体的报错信息,笔者的报错信息如下:
2018-03-21 14:06:54 1827 [Warning] Can't create test file /var/db/mysql/iZ2zehhwq5a6tp1zk5quhiZ.lower-test
/usr/local/libexec/mysqld: Can't change dir to '/var/db/mysql/' (Errcode: 2 - No such file or directory)
2018-03-21 14:06:54 1827 [ERROR] Aborting
原因是无法将目录定位至'/var/db/mysql/'
遂建立了相关的文件夹,解决了相关问题。
恢复修改
./mysql-server stop
重新编辑mysql-server
进行恢复./mysql-server start
总结:无论出现什么问题,解决该问题的第一步都应该是:查看具体的报错信息.