Laradock环境Mariadb容器持久化数据重启后无法访问如何恢复
恢复步骤
- 先停止运行中的mariadb容器,避免数据写入冲突
进入laradock目录执行命令:docker-compose stop mariadb - 修复宿主机数据目录权限
你当前数据文件的属主为systemd-coredump,属于典型的权限不匹配问题:mariadb容器内运行服务的默认用户UID为999,没有权限读取当前属主的文件,因此会显示数据库为空。执行以下命令修改权限:sudo chown -R 999:999 ~/laradock/data/mariadb
直接指定UID修改权限,不需要宿主机存在对应999的用户即可生效。 - 重启mariadb容器验证数据
执行命令启动容器:docker-compose start mariadb
等待30秒待服务完全启动后,可进入容器验证数据是否恢复:docker-compose exec mariadb mysql -u<MARIADB_USER> -p<MARIADB_PASSWORD> myuserdb
替换命令中对应的数据库用户名、密码,进入库后执行show tables;即可确认原有表是否正常加载。 - 若权限修复后仍无法读取数据,执行强制恢复操作
- 先完整备份现有数据目录,避免操作失误丢失数据:
cp -r ~/laradock/data/mariadb ~/mariadb_backup_$(date +%Y%m%d) - 在laradock的mariadb配置文件(路径为
./mariadb/my.cnf)的[mysqld]配置段下添加强制恢复参数:innodb_force_recovery = 1 - 重启mariadb容器,正常启动后将所有库数据导出为sql备份,再删除原有数据目录,去掉强制恢复参数后重新初始化容器,导入sql备份即可完成恢复。
- 先完整备份现有数据目录,避免操作失误丢失数据:
内容的提问来源于stack exchange,提问作者cent89
相关产品推荐
相关产品推荐

