CentOS7下更改MySQL5.6.4默认的数据存储位置
最近一下入到centos7中的mysql坑,差点没跳出来,现把整个痛苦历程记录下来,事情的起因皆因女票在服务器(centos7)中的mysql的默认数据存储位置(var/lib/mysql)空间不够,想要把mysql默认存储位置指定到其他文件夹下。然后我就入坑了……..一入就是好几天。主要问题是:按照网上能搜到的结果(几乎清一色的答案,相信在看到我这篇博客之前,大家也看过其他的博客,几乎都是一样的设置),但是mysql就是起不来…. 先说下网上搜到的答案的解决方案:1、把/etc/my.cnf文件中的datadir和socket改到你想要的位置路径下;2、再搞个什么软连接。 这个方法可能是有用的,但是至少在CentOS7和MySQL5.6.4下是无效的,如果我们按照网上通常的设置去做:
![socket](https://i-blog.csdnimg.cn/blog_migrate/b57225b13499c8ccf06424df762b5d1c.jpeg)
并且通过命令 chown -R mysql:mysql /home/hc/mysql_data 把权限给mysql后,然后通过 service mysql start 结果就是下面这个场景:
![mysql 启动结果](https://i-blog.csdnimg.cn/blog_migrate/7376bd423be0ec6d88be0af2189e739b.jpeg)
对,你没看错,一直卡在那,没有任何结果…..
然后通过命令 cat /var/log/mysqld.log 去打开日志看看到底发生了什么,日志的结果如下:
![日志](https://i-blog.csdnimg.cn/blog_migrate/25a7abec8a38ed2afc0a1d104235e29d.jpeg)
就是提示你 socket file(mysql.sock) 不存在,当时想着把var/lib/mysql下的socket复制过去,但是实际上这个文件是mysql启动后生成的。就这么搞了一个晚上到凌晨3点多,谷歌百度把能看的都看了,还是解决不了。然后回宿舍的路上突发奇想,给女票说,感觉应该只改datadir就可以,没必要改那个socket,我也不知道为什么会这么想。然后第二天早上8点钟到实验室,先去mysql官网把文档认真的看了一遍,貌似是证实了我的想法,因为官网上也从未提过改socket的路径,官网文档:Initializing the Data Directory。然后按照我想的去只改datadir的路径,改完后,start,很遗憾,还是起不来,去看日志,结果为:
![日志2](https://i-blog.csdnimg.cn/blog_migrate/9a9c263080ea4f30f0c254bf0c03c187.jpeg)
看日志的意思,就是没有权限,但是权限已经赋给了呀,又是一通谷歌百度,基本上的答案都是赋权限,把SELINUX设成disabled之类的,完全没鸟用。至少对于我这个没用。期间,一度认为这条路走不通,开启了源码编译安装的路,因为源码安装在编译的时候就可以自己指定路径,关于源码安装,详见下一篇博客:CentOS7下源码编译安装MySQL5.6.4。还是回到这个问题,又是无意间突发灵感,可能是上帝在看到我为此困惑了很几天的原因,给了点眷顾吧,想法是:因为权限问题,但是我已经把/home/hc/mysql_data的权限给了mysql,就想到因为上一级目录hc的权限是hc的,会不会是导致mysql没法读写/home/hc/mysql_data/的原因,因此把mysql_data又拷贝到了home目录下,与hc目录同级了,即:
![mycnf正确设置](https://i-blog.csdnimg.cn/blog_migrate/dda183b7366c6034c1263aa943353aae.jpeg)
p.s.:关于这一点我也不是很清楚为什么会这样,但他确实有用。如果有知道原因或者其他解决方案的,欢迎留言交流。
然后再次启动:先通过 ps -ef | grep mysql 看看有没有mysql的进程,有的话,service mysql stop 把进程关掉,然后 service mysql start启动:
![正确启动](https://i-blog.csdnimg.cn/blog_migrate/d84852eb5101d15317b5c98c8c17f667.jpeg)
一切正常,来看看到底启动成功了没:
![正常](https://i-blog.csdnimg.cn/blog_migrate/bd7800bd84ad294301a3418e30b343db.jpeg)
直接进入mysql:
![进入mysql](https://i-blog.csdnimg.cn/blog_migrate/5496b3ddfb7f3030644e473a8746debf.jpeg)
看看,数据默认目录改过来了没:
![数据库目录](https://i-blog.csdnimg.cn/blog_migrate/5a4bf4d6f4c944953ac7d54dd1cb2deb.jpeg)
显示已经改过来了,下面来创建个数据库测试下:
![创建数据库](https://i-blog.csdnimg.cn/blog_migrate/80d75cdc860c0db3e123b476da248205.jpeg)
对应的目录下显示也已经创建成功了:
![显示目录](https://i-blog.csdnimg.cn/blog_migrate/bec1d104c7b0c37a1ddfc6c074e42cf2.jpeg)
perfect!终于解决了这个该死的问题。关于源码编译安装,详见下一篇博客:CentOS7下源码编译安装MySQL5.6.4