今天手贱地把自己的服务器重启了一下,然后照着流程,启动docker服务,然后重启mysql容器。
但是在我重启容器了之后却发现,使用docker ps命令后,并没有我刚刚重启的Mysql容器。
使用docker ps -a命令查看,可以看到Mysql容器几秒前退出了。也就是说,这个容器启动失败了。
然后我就使用docker logs [container ID]命令查看这个容器的运行日志,发现:提示了这么一条错误:

Access denied for user 'root'@'localhost' (using password: YES)

也就是说,这个docker容器的数据库默认密码错了。
然后我突然想起来,在我创建这个数据库docker容器的时候,确实有把数据库localhost的root密码修改过,但是同时没有修改这个容器的默认配置。
这就是为什么docker restart [container ID]命令无法重新启动mysql容器的原因了。(当然还有其他各种的原因,但大多都是配置方面的错误)

解决方法:

cd 到 /var/lib/docker/containers/目录下,这个目录就是docker容器的目录。
对于每一个容器,都有一个唯一的容器ID,我的是c9e55df1b121,然后我就可以在containers目录下找到以这个ID开头的文件夹:c9e55df1b121377fea6fc1b1cd6e79443d1b97aab50dc013dfa27b1002e76e14
进入这个目录,就可以看到有一个config.v2.json文件,这个文件就是该容器的配置文件。
打开这个文件就会看到以json形式存储的配置信息,然后在其中找到:MYSQL_ROOT_PASSWORD,这个密码应该就是老密码了。将这个老密码修改为正确的密码,保存即可。
注意:保存时,一定要确保docker没有在运行,即使用systemctl stop docker命令将docker关闭,否则保存后,docker仍然会依照老密码启动容器,容器仍然不能启动。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐