日期:2014-05-16  浏览次数:20798 次

Linux下改动mysql的存储目录后,mysql无法启动
我安装的mysql版本为:MySQL-server-community-5.1.48-1.rhel4.i386.rpm
通过命令: rpm -ivh MySQL-server-community-5.1.48-1.rhel4.i386.rpm  
安装后,mysql启动正常。但是我想把默认安装的数据库文件转移到/home/data/目录下,我修改了一些配置文件后就无法启动mysql了。


我具体的安装步骤为:
1、把MySQL服务进程停掉: 
mysqladmin -u root -p shutdown

采用命令查询mysql进程:ps aux | grep mysql | grep -v grep 所有有关mysql的进程都关掉了。

2、把/var/lib/mysql整个目录移到/home/data
mv /var/lib/mysql /home/data/
这样就把MySQL的数据文件移动到了/home/data/mysql下 

3、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

4、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
vi  my.cnf    (用vi工具编辑my.cnf文件,找到下列数据修改之)
# The MySQL server
[mysqld]
port   = 3306
#socket  = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
socket  = /home/data/mysql/mysql.sock   (加上此行)

5、修改MySQL启动脚本/etc/rc.d/init.d/mysql
最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
[root@test1 etc]# vi /etc/rc.d/init.d/mysql
#datadir=/var/lib/mysql    (注释此行)
datadir=/home/data/mysql   (加上此行)

6、重新启动MySQL服务
/etc/rc.d/init.d/mysql start
或用reboot命令重启Linux

但当我操作到第6步时报错:Starting MySQL.Manager of pid-file quit without updating file.[FAILED]

查看日志文件:
[root@localhost mysql]# cat localhost.localdomain.err 
100716 03:35:54 mysqld_safe Starting mysqld daemon with databases from /home/data/mysql
100716 3:35:54 [Warning] Can't create test file /home/data/mysql/localhost.lower-test
100716 3:35:54 [Warning] Can't create test file /home/data/mysql/localhost.lower-test
/usr/sbin/mysqld: Can't change dir to '/home/data/mysql/' (Errcode: 13)
100716 3:35:54 [ERROR] Aborting

100716 3:35:54 [Note] /usr/sbin/mysqld: Shutdown complete

100716 03:35:54 mysqld_safe mysqld from pid file /home/data/mysql/localhost.localdomain.pid ended

感觉是在/etc/my.cnf配置文件没配好,我把软件卸载后,把/etc/my.cnf删除,安装默认安装,和默认的数据库存储目录,mysql服务又可以启动了。
以上的操作步骤,我都是按照网上的一个教程做的。有哪位朋友能帮忙解决下?谢谢。



------解决方案--------------------
你看看那几句错误信息
我感觉非常可能是权限的问题 你自己再好好检查
我不确认你的mysql是不是用到了mysql用户还是别的用户 我的情况下是mysql用户
你执行一下 grep "mysql" /etc/passwd 我看看

另外/etc/my.cnf里也有关datadir的设定 
[mysqld]
datadir=/xxxx/mysql
socket=/xxxx/mysql.sock
------解决方案--------------------
注意selinux权限,重置selinux上下文或者修改为原来的上下文。