您的位置:首页 > 数据库 > MySQL

解决mysql更换数据存储目录的问题

2017-10-16 20:49 155 查看
我的mysql用的是yum安装的,开始默认的安装目录是/var/lib/mysql,修改成/data3/lib/mysql:1:将/etc/my.conf有用的配置如下:
 [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidslow_query_log = 1slow_query_log_file = /var/lib/mysql/slow_queries.log
修改成
[mysqld]datadir=/data3/lib/mysqlsocket=/data3/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0
log-error=/data3/log/mysqld.logpid-file=/data3/run/mysqld/mysqld.pid
slow_query_log = 1slow_query_log_file = /data3/lib/mysql/slow_queries.log
   即将所有的/var都修改成/data32:然后修改/etc/init.d/mysqld也是将所有的/var/改成/data3/3:将所有的/var目录下的数据全部拷贝到/data3下,修改目录权限为:chown mysql:mysql /data3/ -R4:重启mysql:

 重启失败,并且没有任何提示信息
找了好久,才找到原来与SELinux的权限模式有关于是:在网上找到了一篇很好的文章:http://jejoker.iteye.com/blog/1882028也可以参考我转载的:http://cyxinda.blog.163.com/blog/static/36596186201722333039773/解决方法有两种:1:执行命令:semanage fcontext -a -t mysqld_db_t "/data3(/.*)?"添加一个上下文映射类型:mysqld_db_t执行命令:restorecon -Rv /data3然后在执行service mysqld start就可以重启完成了2:关闭linux的SELinux权限模式[root@slave1 mysql]# setenforce 0

setenforce: SELinux is disabled
或者:
查看/var/log/mysqld.log,发现Can't create test file /xxx/mysql/centos5.lower-test,这里是因为没有权限创建或读取文件。de style="padding: 0px; margin: 0px;" > 解决办法就是使用setenforce 0 这个命令,让系统关闭权限校验,然后再运行命令 service mysqld start 发现OK了。de>de style="padding: 0px; margin: 0px;" > 如果要彻底禁用SELinux 需要在/etc/sysconfig/selinux中设置参数selinux=0de>de style="padding: 0px; margin: 0px;" > 另外一个办法是restorecon -FRv /home/data/mysql,或者chcon -R -t mysqld_db_t /home/data/mysqlde>
然后在执行service mysqld start就可以重启完成了
在本地登录会遇到:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
需要在/etc/my.cnf中添加:
[client]
socket=/data3/lib/mysql/mysql.sock
即可。

在使用semanage fcontext -a -t mysqld_db_t "/data3(/.*)?"的时候,可能会遇到semanage SELinux Command Not Found的问题,那么解决该问题:解决:semanage SELinux Command Not Found的问题
首先需要使用yum命令找到/usr/sbin/semanage对应的包名,命令如下:# yum provides /usr/sbin/semanage   //查找命令或文件对应包名然后执行:
        # yum -y install policycoreutils-python完美。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: