mysql更改数据存放目录

MYSQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:

  1. home目录下建立data目录
            cd /home
            mkdir data
    
  2. 把MySQL服务进程停掉:
            mysqladmin -u root -p shutdown
    
  3. 把/var/lib/mysql整个目录移到/home/data
            mv /var/lib/mysql /home/data/
    

    这样就把MySQL的数据文件移动到了/home/data/mysql下

  4. 找到my.cnf配置文件
    如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:

            cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
    

  5. 编辑MySQL的配置文件/etc/my.cnf
    为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:

            vi  my.cnf  (用vi工具编辑my.cnf文件,找到下列数据修改之)
            # The MySQL server[mysqld] 
            port = 3306
            #socket  = /var/lib/mysql/mysql.sock
            socket  = /home/data/mysql/mysql.sock (加上此行)
    
  6. 修改MySQL启动脚本/etc/init.d/mysql
    最后,需要修改MySQL启动脚本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。

            vi /etc/init.d/mysql#datadir=/var/lib/mysql(注释此行)
    
            datadir=/home/data/mysql (加上此行)
    

如果是CentOS还要改 /usr/bin/mysqld_safe 相关文件位置;
最后 做一个mysql.sock 链接:

            in -s /home/data/mysql/mysql.sock /var/lib/mysql/mysql.sock

7. 重新启动MySQL服务

            /etc/init.d/mysqld start

或用reboot命令重启Linux
如果工作正常移动就成功了,否则对照前面的7步再检查一下。还要注意目录的属主和权限。
复制内容到剪贴板

代码:

            [root@sample ~]# chown -R mysql:mysql /home/data/mysql/  ← 改变数据库的归属为mysql
            [root@sample ~]# chmod 700 /home/data/mysql/test/  ← 改变数据库目录属性为700
            [root@sample ~]# chmod 660 /home/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",这里也需要改掉

  1. 另外,还有权限问题,查看/var/log/mysqld.log,发现Can't create test file /xxx/mysql/centos5.lower-test

这里是因为没有权限创建或读取文件。

解决办法就是使用setenforce 0 这个命令,让系统关闭权限校验,然后再运行命令 service mysqld start 发现OK了。

如果要彻底禁用SELinux 需要在/etc/sysconfig/selinux中设置参数selinux=0

另外一个办法是restorecon -FRv /home/data/mysql,或者chcon -R -t mysqld_db_t /home/data/mysql

版权声明

本站文章、图片、视频等(除转载外),均采用知识共享署名 4.0 国际许可协议(CC BY-NC-SA 4.0),转载请注明出处、非商业性使用、并且以相同协议共享。

© 空空博客,本文链接:https://www.yeetrack.com/?p=1215