我在 MacOS 的开发环境中搭建了一套 MySQL 服务。为了防止容器崩溃后数据丢失,按照网友的方法对容器内的/VAR/LIB/MYSQL进行了磁盘映射。工作了一段时间好好的,昨天我讲 Docker 环境重启了,发现 MySQL 启动不了了。启动日志显示:chown: changing ownership of '/var/lib/mysql/mysql.sock': No such file or directory。
结合百度、谷歌、Steckoverflow等平台的搜索,没有解决。大概的解决思路:
1、目录权限问题,将目录权限设置了全部用户可以读写,依然不行
2、重新Docker 部署MySQL 服务,重新检查容器运行命令,还是不行。
解决方式一:后来找到 GitHub 的一个讨论,讨论地址:https://github.com/docker-library/mysql/issues/939 。里面遇到了和我一样的问题,按照网友提供的方案:里面在容器启动前,删除容器对应的文件:/var/lib/mysql/mysql.sock。尝试操作了,确实可以。但是在我的开发环境 MySQL 连不上,需要再次重启一下容器(可能出发 MySQL 的修复机制)就可以了。
最终解决:再次查看https://github.com/docker-library/mysql/issues/939里面的讨论,里面有个延伸到stackoverflow(地址:https://stackoverflow.com/questions/64146845/mysql-not-starting-in-a-docker-container-on-macos-after-docker-update)的讨论,最高分回答提到在 docker 桌面客户端禁用Use gRPC FUSE for file sharing的选项才行
我发现我的客户端是没有开启Use gRPC FUSE for file sharing这个选项的,我尝试了开启“Use gRPC FUSE for file sharing”,重启 docker,发现操作正常了。mysql 服务关闭再开启也没问题了。
不过我现在还是不懂其中原理,先忙手头工作了,接下来再去探究其中原因。在这里也给遇到同问题的网友提供一些思路,可以一起讨论。
网友评论