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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012328159/article/details/80115096


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

        最近一下入到centos7中的mysql坑,差点没跳出来,现把整个痛苦历程记录下来,事情的起因皆因女票在服务器(centos7)中的mysql的默认数据存储位置(var/lib/mysql)空间不够,想要把mysql默认存储位置指定到其他文件夹下。然后我就入坑了……..一入就是好几天。主要问题是:按照网上能搜到的结果(几乎清一色的答案,相信在看到我这篇博客之前,大家也看过其他的博客,几乎都是一样的设置),但是mysql就是起不来…. 先说下网上搜到的答案的解决方案:1、把/etc/my.cnf文件中的 datadir 和 socket 改到你想要的位置路径下;2、再搞个什么软连接。 这个方法可能是有用的,但是至少在CentOS7和MySQL5.6.4下是无效的,如果我们按照网上通常的设置去做:

 

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

 

对,你没看错,一直卡在那,没有任何结果…..
然后通过命令 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,很遗憾,还是起不来,去看日志,结果为:

 

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

 

p.s.:关于这一点我也不是很清楚为什么会这样,但他确实有用。如果有知道原因或者其他解决方案的,欢迎留言交流。
然后再次启动:先通过 ps -ef | grep mysql 看看有没有 mysql 的进程,有的话,service mysql stop 把进程关掉,然后 service mysql start启动:

 

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

 

直接进入mysql:

 

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

 

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

 

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

 

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

 

posted @ 2019-11-06 05:41  汉学  阅读(215)  评论(0编辑  收藏  举报