MySQL更改默认数据目录

本文介绍了将MySQL数据库默认数据目录从/var/lib/mysql更改为/mysql/newdir的步骤,包括登录数据库、查看原数据目录、停止服务、创建新目录、复制或移动文件、修改权限和配置文件,最后开启服务并验证更改是否生效。

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

mysql数据库安装好之后,默认数据目录为:datadir=/var/lib/mysql(该数据目录占用根目录空间),此时想更改数据目录为其他目录(比如非系统盘目录),本文将介绍将默认路径( /var/lib/mysql/)更改为 /mysql/newdir,步骤如下:

1.  登录数据库

mysql -u root -p

2. 查看确认数据目录路径(查看datadir 那一行所指的路径):假设datadir为/var/lib/mysql

show variables like '%dir%';

3. 停止mysql服务

service mysqld stop

4. 创建新的数据库存放目录

mkdir /mysql/newdir

5. 复制/移动之前存放数据库目录文件,到新的数据库存放目录位置;

cp -R /var/lib/mysql/* /mysql/newdir   #或mv /var/lib/mysql/* /mysql/newdir 

注意:mv会删除原来的数据,如果默认的数据不需要保留且为了释放空间可以选择使用mv,否则直接cp

6. 修改mysql数据库目录权限

chown mysql:mysql -R /mysql/newdir 

7. 修改配置文件(datadir指向新的数据目录)

vi  /etc/my.cnf

datadir=/mysql/newdir

8. 开启mysql服务

 service mysqld start

此时登录数据库查看数据目录路径是否生效(即执行步骤1和步骤2)

 

 

<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、付费专栏及课程。

余额充值