跨主机恢复Docker Grafana数据卷后无法登录,求问题排查
Grafana数据卷恢复后密码登录失败问题排查
问题描述
我尝试从另一台主机恢复已备份的Docker数据卷,该卷对应Grafana容器的/var/lib/grafana目录。
备份命令:
docker run --rm --volumes-from Grafana -v $(pwd):/backup busybox tar cvfz /backup/grafana.tar /var/lib/grafana
其中Grafana是挂载该卷的容器名称。将grafana.tar传输到新主机后,执行恢复命令:
docker run --rm --volumes-from grafana-new -v $(pwd):/backup busybox sh -c "cd /var/lib/grafana && tar xvf /backup/grafana.tar --strip 1"
grafana-new是已挂载同路径/var/lib/grafana卷的新容器。终端显示文件已解压:
nicola@nicola-virtualbox:~/Documenti/volume-backup$ docker run --rm --volumes-from grafana-new -v $(pwd):/backup busybox sh -c "cd /var/lib/grafana && tar xvf /backup/grafana.tar --strip 1" var/lib/grafana/ var/lib/grafana/png/ var/lib/grafana/csv/ var/lib/grafana/plugins/ var/lib/grafana/alerting/ var/lib/grafana/alerting/1/ var/lib/grafana/alerting/1/__default__.tmpl var/lib/grafana/grafana.db
但使用原主机的密码登录Grafana时提示密码错误。
问题原因及解决方法
核心原因
解压后的文件权限不匹配:Grafana容器默认以grafana用户(UID/GID为472)运行,而通过busybox解压的文件权限会被设置为root,导致Grafana进程无法正常读取存储用户密码的grafana.db文件。
修复步骤
- 先停止新主机上的
grafana-new容器docker stop grafana-new - 重新执行恢复命令,同时修正目录及文件的权限
docker run --rm --volumes-from grafana-new -v $(pwd):/backup busybox sh -c "cd /var/lib/grafana && tar xvf /backup/grafana.tar --strip 1 && chown -R 472:472 /var/lib/grafana" - 启动
grafana-new容器docker start grafana-new
验证方法
- 进入容器查看
grafana.db的权限是否正确:
正常输出应显示属主为docker exec -it grafana-new ls -l /var/lib/grafana/grafana.dbgrafana grafana(对应UID 472)。 - 若权限正确仍无法登录,可检查备份的
grafana.db是否完整:在原主机使用sqlite3 grafana.db打开文件,查看user表是否存在有效数据。
内容的提问来源于stack exchange,提问作者NicoCaldo
相关产品推荐
相关产品推荐

