场景:在迁移mysql5.5.25a数据目录(从/var/lib/mysql迁移至/data)后,无法启动数据库,执行service mysql start,提示pid无法更新,新旧数据目录下的错误日志均无任何信息。此时,没有太多mysql使用经验的同事估计已经傻眼了。


类似问题如何排查呢?

这里有个小技巧:

可以稍微改下/etc/init.d/mysql(先备份),里面的
      $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &

把里面的>/dev/null删掉,这样子执行service mysql start就会有提示信息了,提示下面的东西:

touch: cannot touch `/data/localhost.err':Permission denied

chmod: cannot access `/data/localhost.err':Permission denied

touch: cannot touch `/data/localhost.err':Permission denied

chown: cannot access `/data/localhost.err':Permission denied

mkdir: cannot create directory `/data':File exists

chown: cannot access `/data': Permissiondenied

chmod: cannot access `/data': Permissiondenied


我们明明已经改了新数据目录/data的属主属组了啊,为何提示没权限。有linux使用经验的很容易联想到是selinux在做怪,果然,执行setenforce 0后mysql就正常启动了,虚惊一场。