CentOS7下更改MySQL5.6.4默认的数据存储位置

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

并且通过命令 chown -R mysql:mysql /home/hc/mysql_data 把权限给mysql后,然后通过 service mysql start 结果就是下面这个场景:

mysql 启动结果

对,你没看错,一直卡在那,没有任何结果…..
然后通过命令 cat /var/log/mysqld.log 去打开日志看看到底发生了什么,日志的结果如下:

日志

就是提示你 socket file(mysql.sock) 不存在,当时想着把var/lib/mysql下的socket复制过去,但是实际上这个文件是mysql启动后生成的。就这么搞了一个晚上到凌晨3点多,谷歌百度把能看的都看了,还是解决不了。然后回宿舍的路上突发奇想,给女票说,感觉应该只改datadir就可以,没必要改那个socket,我也不知道为什么会这么想。然后第二天早上8点钟到实验室,先去mysql官网把文档认真的看了一遍,貌似是证实了我的想法,因为官网上也从未提过改socket的路径,官网文档:Initializing the Data Directory。然后按照我想的去只改datadir的路径,改完后,start,很遗憾,还是起不来,去看日志,结果为:

日志2

看日志的意思,就是没有权限,但是权限已经赋给了呀,又是一通谷歌百度,基本上的答案都是赋权限,把SELINUX设成disabled之类的,完全没鸟用。至少对于我这个没用。期间,一度认为这条路走不通,开启了源码编译安装的路,因为源码安装在编译的时候就可以自己指定路径,关于源码安装,详见下一篇博客:CentOS7下源码编译安装MySQL5.6.4。还是回到这个问题,又是无意间突发灵感,可能是上帝在看到我为此困惑了很几天的原因,给了点眷顾吧,想法是:因为权限问题,但是我已经把/home/hc/mysql_data的权限给了mysql,就想到因为上一级目录hc的权限是hc的,会不会是导致mysql没法读写/home/hc/mysql_data/的原因,因此把mysql_data又拷贝到了home目录下,与hc目录同级了,即:

mycnf正确设置

p.s.:关于这一点我也不是很清楚为什么会这样,但他确实有用。如果有知道原因或者其他解决方案的,欢迎留言交流。

然后再次启动:先通过 ps -ef | grep mysql 看看有没有mysql的进程,有的话,service mysql stop 把进程关掉,然后 service mysql start启动:

正确启动

一切正常,来看看到底启动成功了没:

正常

直接进入mysql:

进入mysql

看看,数据默认目录改过来了没:

数据库目录

显示已经改过来了,下面来创建个数据库测试下:

创建数据库

对应的目录下显示也已经创建成功了:

显示目录

perfect!终于解决了这个该死的问题。关于源码编译安装,详见下一篇博客:CentOS7下源码编译安装MySQL5.6.4




猜你喜欢

转载自blog.csdn.net/u012328159/article/details/80115096