Ubuntu迁移mysql数据库到新的目录下
一、如果systemctl status apparmor启动成功可按下面步骤:
1. 先使用下面命令将mysql数据库服务停止:
sudo systemctl stop mysql
2. 迁移到挂载新盘 /mnt/data/
方式一:sudo mv /var/lib/mysql /mnt/data/ 方式二:sudo cp -a /var/lib/mysql /mnt/data/ 方式三:sudo rsync -av /var/lib/mysql /mnt/data/
3.修改mysql配置文件my.cnf
mysql数据库会按顺序优先级从/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf、~/.my.cnf四个位置找my.cnf配置文件,一旦找到就不再继续往下找。Ubuntu默认将my.cnf配置文件放在/etc/mysql/my.cnf位置,所以在/etc/my.cnf位置没有找到这个配置文件。
选择自己使用的文本编辑器编辑my.cnf配置文件,我用vim,所以sudo vim /etc/mysql/my.cnf。一样需要sudo,使用root权限编辑。将其中[mysqld]标签下的datadir属性值改为新数据库目录路径/mnt/data/mysql,如图:
如图注释并替换

4. 修改系统安全模块usr.bin.mysqld文件
sudo vim /etc/apparmor.d/usr.sbin.mysqld
找到其中的
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
两行权限声明,可以在前面加上#好注释掉。然后对照格式,加入新路径的权限声明:
/mnt/data/mysql/ r,
/mnt/data/mysql/** rwk,
5.修改系统安全模块abstractions/mysql文件
sudo vim /etc/apparmor.d/abstractions/mysql
如图注释并替换

6. 重启
sudo systemctl restart apparmor sudo systemctl restart mysql
二、如果没有systemctl status apparmor服务:
1. 先使用下面命令将mysql数据库服务停止:
sudo systemctl stop mysql
2. 迁移到挂载新盘 /mnt/data/
方式一:sudo rsync -av /var/lib/mysql /mnt/data/
3.修改mysql配置文件my.cnf
mysql数据库会按顺序优先级从/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf、~/.my.cnf四个位置找my.cnf配置文件,一旦找到就不再继续往下找。Ubuntu默认将my.cnf配置文件放在/etc/mysql/my.cnf位置,所以在/etc/my.cnf位置没有找到这个配置文件。
选择自己使用的文本编辑器编辑my.cnf配置文件,我用vim,所以sudo vim /etc/mysql/my.cnf。一样需要sudo,使用root权限编辑。将其中[mysqld]标签下的datadir属性值改为新数据库目录路径/mnt/data/mysql,如图:
如图注释并替换

4. 重启
sudo systemctl restart mysql 如果遇见Can't Create Test File错误。
1. 要保证数据目录属于服务的所有者,一般是mysql用户
2. 保证数据目录有“x”执行权限
3. 保证数据目录的所有父级目录对用户、用户组、以及其他均有“x”执行权限
4. 再就是检查systemd、selinux还有apparmor了
前三条确定没有问题后,根据第4条继续追查发现问题所在:
默认的systemd管理单元 mariadb.service 中会有ProtectHome=true的配置,即数据目录在/home下,通过systemctl或者Service启动数据服务是无法启动的,因为home目录受保护了,所有编辑mariadb.service 中的ProtectHome修改为false后可以正常启动。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现