Chinaunix

标题: 【已解决】修改my.cnf导致service mysqld无法启动 [打印本页]

作者: perljoker    时间: 2013-06-03 11:41
标题: 【已解决】修改my.cnf导致service mysqld无法启动
本帖最后由 chinafenghao 于 2013-06-04 16:12 编辑

环境: CentOS 6.3,Mysql5.1.61
描述:
不修改my.cnf的情况下,可以直接用service启动正常,
修改my.cnf的[mysqld]下的datadir=/mnt/mdsvda/database/data/mysql/cip01,权限也已经赋予mysql

这样子以后,service start就无法启动,报MySQL Daemon failed to start.
log信息为:
[Warning] Can't create test file /mnt/mdsvda/database/data/mysql/cip01/dbA.lower-test
^G/usr/libexec/mysqld: Can't change dir to '/mnt/mdsvda/database/data/mysql/cip01/' (Errcode: 13)
130603 11:38:28 [ERROR] Aborting

在init.d下执行./mysqld start,一样的错误信息,可使用 sh mysqld start,却能正常启动
悲催啊,请教各位高人,如果处理,网上搜不到解决办法哇。
作者: action08    时间: 2013-06-03 11:41
本帖最后由 action08 于 2013-06-03 15:36 编辑

在init.d下执行./mysqld start,一样的错误信息,可使用 sh mysqld start,却能正常启动



安全问题啊,有个诡异的enforce命令可以关掉selinux,然后再试下
作者: Shaquile    时间: 2013-06-03 14:29

chmod 755 /mnt/mdsvda/database/data/mysql/cip01
chown -R mysql /mnt/mdsvda/database/data/mysql/cip01
作者: perljoker    时间: 2013-06-03 14:36
回复 2# Shaquile


   不行啊,本来权限都是正常的,我重新操作一次,依然失败啊
作者: Shaquile    时间: 2013-06-03 15:10
我猜测:你以前的datadir不是/mnt/mdsvda/database/data/mysql/cip01,而且有数据和数据文件存在。
现在你想还一个目录,就直接改datadir的值,结果失败

如果是这样的话,你可以:
1。 关闭mysq'l,把原来的数据文件copy到/mnt/mdsvda/database/data/mysql/cip01
2。启动mysql

作者: Shaquile    时间: 2013-06-03 15:38
你确认init.d下的./mysqld start和sh mysqld start的mysqld是同一下脚本吗
作者: perljoker    时间: 2013-06-03 16:17
action08 发表于 2013-06-03 15:35
在init.d下执行./mysqld start,一样的错误信息,可使用 sh mysqld start,却能正常启动


确定是seLinux的问题了,这个万恶的源头
我在使用setenforce 0 以后,service 的确可以直接启动了(包括在init.d下执行./mysqld start)

我原来使用了chcon -R -t mysqld_db_t /xxx 这样的方式,但是因为没有起作用,我以为不是SeLinux的问题
所以这里想再请教2个问题:
1 如何在SeLinux下正常运作;
2 chcon -R -t mysqld_db_t /xxx,不可行么?
作者: perljoker    时间: 2013-06-03 16:18
回复 6# Shaquile


   你这边提到的两个可能性都被我排除了,已确定是SeLinux的问题,尚未找到解决办法。
作者: chenyx    时间: 2013-06-04 08:07
selinux的问题,在/var/log/messages里面会有日志,一般会提示一个selinux的命令,通过那个命令,应该能看到方法的.
作者: wenhq    时间: 2013-06-04 09:24
直接给disable,再试试啊!
作者: chenyx    时间: 2013-06-04 10:01
你的mysql原来的数据目录还在吧,chcon有个--reference参数,你试试用那个参数,"复制"出原来的content到你的新的数据目录看看.
作者: perljoker    时间: 2013-06-04 10:56
chenyx 发表于 2013-06-04 10:01
你的mysql原来的数据目录还在吧,chcon有个--reference参数,你试试用那个参数,"复制"出原来的content到你的新 ...


报“chcon: 给出的安全环境说明冲突”
作者: dzminglong    时间: 2013-06-04 11:01
  我是把selinux直接disable了
作者: zy407321952    时间: 2013-06-04 11:40
你查看你datadir下有没有主机名.err的日志,看有什么报错,selinux开了也是不影响的
作者: perljoker    时间: 2013-06-04 13:13
回复 15# zy407321952


    朋友,我关了SELinux,都正常了,显然已经确认是SELinux的问题了。
作者: zy407321952    时间: 2013-06-04 13:29
回复 16# perljoker


  我mysql修改了datadir,也开了selinux,启动没任何问题。selinux一般也不会影响到mysql的,肯定有别的影响。
作者: wenhq    时间: 2013-06-04 15:06
selinux很高深的,一般不建议开启啊。
作者: perljoker    时间: 2013-06-04 15:36
暂时解决了
不知道这个mysqld干了什么,不知道是不是跟他里面会查询相关文件的目录是否已创建有关系
它需要一直检索到最外层目录,我mount下的磁盘的根目录
我在给磁盘根目录设置了 chcon  -t mysqld_db_t 以后,它终于能正常启动了
可其他程序也会用到这个挂载盘啊,不知道会不会有影响……,先这样看看吧
作者: perljoker    时间: 2013-06-04 16:22

举步维艰啊,修改了log的存放路径以后,又启动不了了,audit.log里面还找不到信息,给log日志及目录增加mysql_log_t也没用,mysql_db_t也没用,禁用SELinux,就正常
天杀的SELinux,我实在是伤不起了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2