青成林语

协助他人,成就彼此 ^_^
启动报错: 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

加上这个目录挂载后,这个报错就会彻底消失。你先执行试试,如果还有其他报错随时发给我!

posted on 2026-06-25 11:34  青成林语  阅读(6)  评论(0)    收藏  举报