CENTOS修改MYSQL数据文件存储目录
MYSQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/var/www/html/xxxx/data下需要进行下面几步:
1、home目录下建立data目录
cd /var/www/html/xxxx/
mkdir data
2、把MySQL服务进程停掉:
mysqladmin -u root -p shutdown
3、把/var/lib/mysql整个目录移到/var/www/html/xxxx/data
mv /var/lib/mysql /var/www/html/xxxx/data/
这样就把MySQL的数据文件移动到了/var/www/html/xxxx/data/mysql下 (不过好像会把/var/lib/mysql这个目录删除,会对下面ln命令造成问题,所以我又手工创建了一个/var/lib/mysql)
4、找到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
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/var/www/html/xxxx/data/mysql/mysql.sock 。操作如下:
vi my.cnf (用vi工具编辑my.cnf文件,找到下列数据修改之)# The MySQL server[mysqld] port = 3306#socket = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)socket = /var/www/html/xxxx/data/mysql/mysql.sock (加上此行)
PS:我修改的版本稍微有点不一样,貌似有两行
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
我都修改了目录
6、修改MySQL启动脚本/etc/init.d/mysql(这一步我没做,因为我使用的版本貌似直接调用了上面那个文件的路径)
最后,需要修改MySQL启动脚本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:/var/www/html/xxxx/data/mysql。(这一步我没做)
[root@test1 etc]# vi /etc/init.d/mysql#datadir=/var/lib/mysql(注释此行)datadir=/var/www/html/xxxx/data/mysql (加上此行)(这一步我没做)
如果是CentOS还要改 /usr/bin/mysqld_safe 相关文件位置;(这一步我没做)
最后 做一个mysql.sock 链接:
ln -s /var/www/html/xxxx/data/mysql/mysql.sock /var/lib/mysql/mysql.sock (原来的错误教程把L打成了i,结果我运行出错,仔细一看原来错在这个地方)
PS,这个文件貌似是自动生成的,最好启动MYSQL服务以后再运行这个命令,然后如果提示“没有那个文件或目录”肯定就是刚才把文件夹移动的时候把/var/lib/mysql这个文件夹删除了
最好自己重新建立一个,以让mysql.sock能复制进去
7、重新启动MySQL服务
/etc/init.d/mysqld start
或用reboot命令重启Linux
如果工作正常移动就成功了,否则对照前面的7步再检查一下。还要注意目录的属主和权限。
复制内容到剪贴板
代码:
[root@sample ~]# chown -R mysql:mysql /var/www/html/xxxx/data/mysql/ ← 改变数据库的归属为mysql
[root@sample ~]# chmod 700 /var/www/html/xxxx/data/mysql/test/ ← 改变数据库目录属性为700 (这步貌似在我使用的新版本中也不用的,因为/etc/init.d/mysql里面已经有修改权限的命令了,一启动MYSQL就自动修改)
[root@sample ~]# chmod 660 /var/www/html/xxxx/data/mysql/test/* ← 改变数据库中数据的属性为660 (这步也不用,理由同上)
错误解决方案:
1.在CentOS上,如果mysql是通过yum安装的,那么可能使用上面的方法不能完全凑效。
原因:mysql的配置文件有多处,除了更改/etc/my.cnf文件之外,还需要更改/usr/lib64/mysql/mysql_config
这个文件里面有一行“ldata=’/var/lib/mysql’”和"socket=/var/lib/mysql/mysql.sock",这里也需要改掉
2.另外,还有权限问题,查看/var/log/mysqld.log,发现Can’t create test file /xxx/mysql/centos5.lower-test
这里是因为没有权限创建或读取文件。
解决办法就是使用setenforce 0 这个命令,让系统关闭权限校验,然后再运行命令 service mysqld start 发现OK了。
另外一个办法是restorecon -FRv /var/www/html/xxxx/data/mysql,或者chcon -R -t mysqld_db_t /var/www/html/xxxx/data/mysql
PS:相关的命令,调试的时候方便使用的
/etc/init.d/mysqld start
/etc/init.d/mysqld restart
service mysqld stop 停止mysql服务,上面的命令提示出错的时候可以用下面这两个
service mysqld start 启动mysql服务
如果访问网站后发现文章列表不见了~不要紧~那是因为有些表正在使用,可以用神器phpmyadmin,进去选中in use的表,然后选下面的 repair table就搞定了