ubuntu2204迁移mysql8.0数据位置时踩的坑

前情提要:服务器上的系统盘快满了,所以准备将mysql的数据迁移到另一个硬盘上去,具体来讲,需要将/var/lib/mysql整个copy到/ssda/mysql_data下去

踩坑过程:

我首先使用了cp -a命令,将文件夹迁移过去:

sudo cp -a /var/lib/mysql /ssda/mysql_data

使用ls -l查看迁移后的mysql文件夹的权限  

 可以看到mysql文件夹是有权限,而且用户组也是没有问题的。

然后再修改mysql的配置文件,将datadir指向迁移后的文件夹

修改完成,保存重启mysql。

sudo systemctl restart mysql.service

OK,大功告成,迁移数据完毕........本来应该是这样的.......

但当我执行重启mysql的命令后,系统却提示mysql启动错误!!!瞬间汗流浃背了,让我看看mysql的报错情况

Error: 13 (Permission denied)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

居然提示我们没有权限,但如我之前所展示的,文件夹的权限已经是修改过的,按理来说没有问题才对。于是我翻看网上的解决办法以及向ChatGPT求助。得到的答案无外乎是:检查目录是否存在,检查mysql文件夹权限是否设置,检查SeLinux,检查Apparmor。

我顺着网上的思路一路检查,前两项是没有问题的,Ubuntu2204也没有装SeLinux,至于Apparmor确实有,网上的解决办法一个是修改/etc/apparmor.d/tunables/alias,在文件底部加入

alias alias /var/lib/mysql/ -> /ssda/mysql_data/mysql/,

当然,我也按照方法添加了语句,但重启mysql依旧报错。另一个解决办法是修改/etc/apparmor.d/usr.sbin.mysqld,将Allow data dir access的值替换为迁移的mysql目录,然后保存退出,重新加载apparmor。

# Allow data dir access
#  /var/lib/mysql/ r,
#  /var/lib/mysql/** rwk,
  /ssda/mysql_data/mysql/ r,
  /ssda/mysql_data/mysql/** rwk,

但当我试过以后,还是一样的权限问题。

最终解决办法

实在搞不明白了,百度到的方法都用了个遍还是不行,还花费了我一个下午的时间。然后我抱着试一试的心态,去外网搜搜看,结果真被我找到了!!!在askubuntu.com里看到一个老哥和我一样的问题,一样的尝试了各种办法,仍然无法解决,顿感欣慰,居然有同命之人。然后!英雄出现在了评论区!

直接说结论:修改/ssda/mysql_data的权限!

居然忘了修改父级目录的权限了,气死了都,浪费一下午时间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值