小c错误集锦(1)--MySQL Daemon failed to start

神游

我都干了些什么?????

装的第一个mysqld服务是mysql-5.5,整个安装过程也就是从开源镜像网站下载下来的二进制安装包安装的—整个安装过程:mysql服务安装

mysql-5.5安装好后,在本机上又用自带rpm包安装mysql-server5.1,mysql-5.1

安装好后启动

service mysqld start

直接报错 MySQL Daemon failed to start

编辑mysqld文件

vim /etc/rc.d/init.d/mysqld

在文件中全局搜索“MySQL Daemon failed to start”
/MySQL Daemon failed to start

这里写图片描述

错误就是这个错误语句

if ! /bin/kill -0 $safe_pid 2>/dev/null; then
                echo "MySQL Daemon failed to start."
                ret=1
                break
fi

#kill -0 pid > /dev/null #进程号pid存在返回0(为真),不存在返回1(为假)
#可用此脚本做测试
#!/bin/sh
kill -0 PID_NUMBER 2>/dev/null
RET=$?
echo $RET

也就是说$safe_pid不存在,再全局搜索safe_pid

发现

这里写图片描述

$! 代表 运行于后台的最后一个作业的PID

猜测产生这个pid的来源就是这个指令

$exec   --datadir="$datadir" --socket="$socketfile" \
                --pid-file="$mypidfile" \
                --basedir=/usr --user=mysql >/dev/null 2>&1 &

于是在此段脚本上方测试查看exec,datadir,socketfile,mypidfile等变量内容

这里写图片描述

运行mysql服务脚本

service mysqld start

测试内容分别输出为

exec test exec : /usr/bin/mysqld_safe
exec test mydatafile : /date/mydate
exec test socketfile : /tmp/mysql.sock 
exec test mypidfile : /var/run/mysqld/mysqld.pid

此时动态观察错误日志文件

tail -f /date/mydate/www.xiaoc.com.err

于是在控制台输出

/usr/bin/mysqld_safe --datadir=/date/mydate --socket=/tmp/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --vasedir=/usr --user=mysql

看到日志文件输出:Version: '5.1.73-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution

3306端口被正常监听了,我猜测服务已经启动

于是查看mysqld状态

service mysql status

mysqld服务果然正在running….

然后关闭服务,再此开启服务,都没有问题……

全程懵逼………

这里写图片描述

你们有遇到过这样的情况吗???


经过打磨,问题变得明朗了起来。

原来是之前用二进制包安装mysql服务的时候,将一个扩展配置文件support_files/my-large.cnf复制到了/etc/my.cnf ,参考二进制安装mysql原文:mysql服务安装

当用rpm包再次安装mysql服务的时候,mysqld的服务脚本会先去读取/etc/路经下是否已经有对mysql服务的扩展配置,如my.cnf,如有则先读取配置文件中属性值。

#这个函数就是读取本机上已存在的my.cnf配置文件,若为空,则就赋予datadir、socket值为后面的默认值

get_mysql_option(){
        result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
        if [ -z "$result" ]; then
            # not found, use default
            result="$3"
        fi
}

get_mysql_option mysqld datadir "/var/lib/mysql"
datadir="$result"
get_mysql_option mysqld socket "$datadir/mysql.sock"
socketfile="$result"
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
errlogfile="$result"
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
mypidfile="$result"

所以,整个问题的关键是/etc/my.cnf,将此文件删除。

重新安装mysqld服务

yum -y reinstall mysql-server

运行

service mysqld start

这里写图片描述
这里写图片描述

马上对mysqld进行数据库初始化,成功开启服务。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值