freebsd mysql启动报及failed precmd routine for mysql的错误

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/null2>/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

总结:无论出现什么问题,解决该问题的第一步都应该是:查看具体的报错信息.

    原文作者:myskies
    原文地址: https://segmentfault.com/a/1190000013884770
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞