AWS Ubuntu 20.04运行myisampack报权限错误13的规范解决方案
解决方案
前置注意事项
执行myisampack前需要保证目标MYISAM表没有运行中的写入操作,可二选一执行以下操作:
- 临时停止MySQL服务:
sudo systemctl stop mysql,打包操作完成后再恢复服务即可 - 登录MySQL控制台执行表锁:
FLUSH TABLES table01 WITH READ LOCK;,锁表后保持当前会话不退出,打包完成后执行UNLOCK TABLES;释放锁即可
规范打包命令
不需要修改任何MySQL默认目录权限,通过sudo指定以mysql用户身份执行打包命令即可:
sudo -u mysql myisampack /var/lib/mysql/myFiles/table01.MYI
打包完成后可执行以下命令校验表完整性:
sudo -u mysql myisamchk /var/lib/mysql/myFiles/table01.MYI
之前操作失败的原因说明
- 把ubuntu用户加入mysql组无效:
/var/lib/mysql目录默认权限为drwx------,仅所有者(mysql用户)拥有读写执行权限,用户组和其他用户无任何权限,即便是mysql组成员也无法进入目录 - 直接用sudo运行报错140:默认sudo是以root身份执行命令,myisampack运行过程中生成的临时文件属主为root,mysql用户无权限读写,触发参数错误
- 切换到/opt目录执行无效:打包命令仍需读取
/var/lib/mysql下的源文件,无法绕过目录权限限制
内容的提问来源于stack exchange,提问作者mckenzm
相关产品推荐
相关产品推荐

