mysql 更改默认数据目录

本文指导您如何在CentOS环境下通过yum命令安装MySQL后,将默认数据目录从/var/lib/mysql移动到指定位置/home/data,包括创建新目录、停止服务、移动目录、创建软链接、修改配置文件及启动服务等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL默认数据目录修改

 

本文主要介绍在CentOS下通过yum命令安装mysql之后,如何移动默认数据目录到指定位置。

 

安装mysql:

yum -y install mysql-server mysql-client

 

Mysql 安装之后默认的数据文件存储目录为/var/lib/mysql。

假如要把目录移到/home/data下需要进行下面几步:

 

1、home目录下建立data目录

cd /home

mkdir data

 

2、把MySQL服务进程停掉:

service mysqld stop

 

3、把/var/lib/mysql 整个目录移到 /home/data

mv /var/lib/mysql /home/data/

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

然后再次创建一个新的空目录,并制作一个软连接到新的sock路径:

mkdir /var/lib/mysql

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

 

4、vim /etc/my.cnf

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

为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改

datadir=/home/data/mysql

socket=/home/data/mysql/mysql.sock 

 

5、vim /etc/init.d/mysqld

datadir=/home/data/mysql

如果是CentOS还要改 /usr/bin/mysqld_safe 相关文件位置;

 

6、vim /usr/lib64/mysql/mysql_config

socket='/home/data/mysql/mysql.sock'

ldata='/home/data/mysql'

 

7、重新启动MySQL服务

service mysqld start

 

如果工作正常移动就成功了,否则对照前面的7步再检查一下。

另外还要注意目录的属主和权限,代码如下:

chown -R mysql:mysql /home/data/mysql/

chmod 700 /home/data/mysql/test/

chmod 660 /home/data/mysql/test/*

 

 

最后,查看日志/var/log/mysqld.log,如果发现Can't create test file /xxx/mysql/centos5.lower-test

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

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

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

 

<think>好的,用户想在Linux系统中更改MySQL数据目录。我需要根据提供的引用资料整理步骤。首先,要确定用户的需求是正确修改数据目录,避免启动错误。 根据引用[1],默认数据目录在/var/lib/mysql,用户需要将整个目录结构迁移到新位置。可能需要停止MySQL服务,复制数据,然后修改配置文件。引用[3]提到创建目录并授权,确保权限正确,否则可能导致启动问题。这里要注意目录的所有者和组设置为mysql:mysql,避免权限不足。 接下来,引用[5]提到配置文件权限问题,如果设置成777会导致MySQL忽略配置文件,应该改为644。所以在修改my.cnf时,不仅内容要正确,文件权限也要检查。 然后,用户可能需要处理符号链接的问题,如引用[2]中使用软连接解决路径问题。如果直接修改数据目录遇到问题,可以尝试使用软链接,但直接修改配置是更推荐的方法。 另外,引用[4]指出如果MySQL用户的家目录不存在,启动时会报错。所以需要确保/home/mysql存在,或者调整用户的家目录设置,避免此类问题。 综合这些步骤,正确的流程应该是:停止服务→备份数据→创建新目录并授权→修改配置文件→复制数据→重启服务→验证。同时,需要注意配置文件的权限和目录所有权,避免常见的错误如Errcode:2或无法切换目录的问题。 可能用户会遇到的问题包括目录权限不正确、配置文件被忽略、数据未完全迁移等。需要提醒用户检查日志文件,确认错误信息,并根据情况调整权限或路径设置。此外,SELinux或AppArmor也可能影响目录访问,如有必要需调整安全策略。</think>### Linux系统中更改MySQL数据目录的步骤 #### 1. 停止MySQL服务 首先确保MySQL服务已停止: ```bash sudo systemctl stop mysql ``` #### 2. 创建新数据目录并授权 假设新目录为`/mnt/data/mysql`: ```bash sudo mkdir -p /mnt/data/mysql sudo chown -R mysql:mysql /mnt/data/mysql # 关键权限设置[^3] ``` #### 3. 迁移原有数据 复制原数据目录内容到新位置: ```bash sudo rsync -av /var/lib/mysql/ /mnt/data/mysql/ ``` #### 4. 修改MySQL配置文件 编辑`/etc/mysql/mysql.conf.d/mysqld.cnf`(路径可能因版本而异): ```ini [mysqld] datadir = /mnt/data/mysql # 修改此项[^1] socket = /mnt/data/mysql/mysql.sock ``` #### 5. 处理配置文件权限 确保配置文件权限为644: ```bash sudo chmod 644 /etc/mysql/mysql.conf.d/mysqld.cnf # 避免被忽略[^5] ``` #### 6. 更新AppArmor/SELinux策略(如需要) Ubuntu系统需修改AppArmor配置: ```bash sudo vim /etc/apparmor.d/usr.sbin.mysqld # 添加新目录路径到文件权限规则 sudo systemctl reload apparmor ``` #### 7. 重启MySQL服务 ```bash sudo systemctl start mysql ``` #### 8. 验证数据目录 登录MySQL执行: ```sql SHOW VARIABLES LIKE 'datadir'; ``` ### 常见问题排查 1. **启动报错**`Can't change dir to '/new/path'` - 检查目录权限是否为`mysql:mysql`[^3] - 确认目录路径拼写正确 2. **配置文件被忽略** 错误提示`World-writable config file`时,需执行: ```bash sudo chmod 644 /path/to/my.cnf # 修改权限[^5] ``` 3. **软链接替代方案** 若直接修改失败,可使用符号链接(临时方案): ```bash sudo ln -s /mnt/data/mysql /var/lib/mysql # 强制关联[^2] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值