You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统修改MariaDB默认数据目录后无法创建测试文件启动失败

Ubuntu系统修改MariaDB默认数据目录启动失败解决方案

故障背景

操作过程如下:

  • 在/media/utente/E_linux路径下新建了名为mysql的目录,执行如下命令配置目录所有者:
chown -R mysql:mysql /media/utente/E_linux/mysql
  • 复制原有数据到新目录:
cp -R -p /var/lib/mysql/* /media/utente/E_linux/mysql
  • 修改MariaDB配置文件中的datadir配置项
  • 启动服务报错:Job for mariadb.service failed because the control process exited with an error code. See "systemctl status mariadb.service"和"journalctl -xe" for details
  • 尝试修改mariadb.service配置文件将ProtectHome参数设为false后问题仍未解决

解决步骤

该场景下故障的核心原因几乎都是Ubuntu默认的AppArmor安全模块限制了MariaDB访问非默认路径的目录,你修改的ProtectHome参数仅限制/home、/root、/run/user路径的访问,对你的/media路径下的新目录不生效,所以修改后无效果。

1. 配置AppArmor访问规则

编辑AppArmor的MariaDB配置文件:

nano /etc/apparmor.d/usr.sbin.mysqld

找到原有默认数据目录的两条权限规则:

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

在这两行下方新增新数据目录的权限规则:

/media/utente/E_linux/mysql/ r,
/media/utente/E_linux/mysql/** rwk,

保存退出后重新加载AppArmor配置:

systemctl reload apparmor

2. 验证上层目录访问权限

确保新数据目录的上层目录允许mysql用户进入,执行以下命令配置执行权限:

chmod +x /media/utente /media/utente/E_linux

3. 确认配置无冲突

检查MariaDB配置文件中除datadir外无其他路径配置指向旧的/var/lib/mysql目录,若有socket、log_error等配置指向旧目录需同步修改,也可以临时将旧的/var/lib/mysql目录重命名避免冲突:

mv /var/lib/mysql /var/lib/mysql.bak

4. 重启服务验证

systemctl restart mariadb

如果仍启动失败,执行journalctl -u mariadb查看完整运行日志即可定位具体问题。

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:24:03