启动报错: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
别慌!这是一个非常经典的 MySQL 8.0 容器启动报错。
报错原因分析
MySQL 8.0 官方镜像默认开启了 secure-file-priv 功能,并且强制要求容器内必须存在 /var/lib/mysql-files 这个目录。当你使用 XtraBackup 物理恢复时,备份文件里并没有包含这个目录,导致容器启动时找不到该路径,从而直接闪退。
极简解决步骤
1. 在本地创建缺失的目录并赋权
# 创建目录
mkdir -p /home/hydev/mysql/mysql-files
# 关键:赋予 MySQL 运行用户 (UID 999) 权限
sudo chown -R 999:999 /home/hydev/mysql/mysql-files
2. 删除之前启动失败的容器
docker rm -f mysql
3. 补全挂载参数,重新启动容器
在原来的启动命令基础上,增加一行 -v /home/hydev/mysql/mysql-files:/var/lib/mysql-files:
docker run -p 3307:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /home/hydev/mysql:/etc/mysql \
-v /home/hydev/mysql/logs:/logs \
-v /home/hydev/mysql/data:/var/lib/mysql \
-v /home/hydev/mysql/mysql-files:/var/lib/mysql-files \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=root1234 \
-d mysql:8.0.17
4. 验证是否成功
# 查看容器状态,确保是 Up 且没有频繁重启
docker ps
# 查看日志,确认没有报错且出现 ready for connections
docker logs mysql
加上这个目录挂载后,这个报错就会彻底消失。你先执行试试,如果还有其他报错随时发给我!
浙公网安备 33010602011771号