把数据库从默认目录移动到/data/mysql目录下
建立目录
mkdir -p /data/mysql
停掉数据库
/etc/init.d/mysqld stop
把/var/lib/mysql整个目录移到/data/mysql
mv /var/lib/mysql /data/mysql
这样就把MySQL的数据文件移动到了/data/mysql下了
找到my.cnf配置文件如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
编辑MySQL的配置文件/etc/my.cnf为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock
[mysqld] port = 3306 #socket = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行) socket = /home/data/mysql/mysql.sock (加上此行)
改MySQL启动脚本/etc/init.d/mysql最后,需要修改MySQL启动脚本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
vi /etc/init.d/mysql #datadir=/var/lib/mysql(注释此行) datadir=/home/data/mysql (加上此行)
如果是CentOS还要改 /usr/bin/mysqld_safe 相关文件位置;
最后 做一个mysql.sock 链接:
ln -s /home/data/mysql/mysql.sock /var/lib/mysql/mysql.sock
重新启动MySQL服务/etc/init.d/mysqld start或用reboot命令重启Linux如果工作正常移动就成功了
最后调整权限
chown -R mysql:mysql /home/data/mysql/ ← 改变数据库的归属为mysql chmod 700 /home/data/mysql/test/ ← 改变数据库目录属性为700 chmod 660 /home/data/mysql/test/* ← 改变数据库中数据的属性为660
CentOS上,如果mysql是通过yum安装的,那么可能使用上面的方法不能完全凑效。
原因:mysql的配置文件有多处,除了更改/etc/my.cnf文件之外,还需要更改/usr/lib64/mysql/mysql_config
这个文件里面有一行“data='/var/lib/mysql'”和"socket=/var/lib/mysql/mysql.sock",这里也需要改掉
另外,还有权限问题,查看/var/log/mysqld.log,发现Can't create test file /xxx/mysql/centos5.lower-test
这里是因为没有权限创建或读取文件。
解决办法就是使用setenforce 0 这个命令,让系统关闭权限校验,然后再运行命令 service mysqld start 发现OK了。
另外一个办法是restorecon -FRv /home/data/mysql,或者chcon -R -t mysqld_db_t /home/data/mysql
最后一个绝招!重启一下!