新手上路,今天使用docker容器技术犯了个错误,花了我一上午的时间来调试查资料,最终解决,下面详细列出问题所在以及解决问题的方法;
问题所在:首先是数据库密码忘记了的原因,这时候还是能运行的,跑去网上查了资料然后进入mysql容器更改了mysql.cnf文件,加入了一行命令如下:
skip-grant-tables
这条命令顾名思义,那就是忘记管理员密码时这行代码可以跳过登陆验证,直接进入mysql从而修改root密码咯,可是这条命令在docker容器里使用就会报极大错误,然而当时并没有意识到。
保存-退出-docker restart [Mysql ID]重启mysql容器
随后查看容器镜像进程发现问题
docker ps -a
可以看到mysql一直处于退出的状态,这个时候发现如果mysql镜像无法启动,那也就无法进入mysql容器(docker exec -it [Mysql ID])去更改配置文件,这个坑有点大,还是自己给自己挖的!
查了无数资料东拼西凑的,竟然找到了容器里mysql.cnf配置文件的位置:
每个人的安装目录都不一样,使用如下命令打印出mysql的配置详情;
docker inspect [Mysql ID] //列出该镜像的配置信息
仔细阅读这个配置信息,发现我要找的secret就在这里面写的清清楚楚.......
下面上图:
docker inspect
找到MergedDir目录位置,用cd进入目录,同时返回上一次进入到diff/etc/mysql/mysql.cnf
这时候发现这个文件才是docker里mysql容器的配置文件,最后屏蔽了条毒代码重新启动了myslq容器
有的人可能本机安装的也有mysql所以在修改文件的时候千万不要修改错了,不然就算你把其他地方的my.cnf修改千百遍,你docker容器里的mysql依然无法启动;