docker一直提示:Access denied for user 'root'@'172.16.0.2' (using password: YES)

  今天在部署一个docker应用的时候,部署完毕报了这个错。一直在找各种问题,一开始从docker开始找,找到mysql,最后又回到docker,不断地删除容器、修改mysql配置,但是花了几个小时也没找到原因。

  这个应用是由两个docker容器构成,一个主要的容器,另一个mysql容器,尝试了各种可能之后确定了应该是密码错误的问题,最终决定找出mysql连接的密码配置。查看Dockerfile发现这一句话:

ADD config/* /etc/syzoj-config/

  这里是把宿主机的配置文件复制到docker里了。于是登录上docker bash,找到配置文件,果然是mysql密码错了。再仔细看了看,原来这个密码是我在第一遍构建的时候改错的。但是为什么之后删除容器仍然没用呢?我猜是缓存问题,但是由于对docker不熟悉我,这种docker-compose构建方式我不知道如何清除缓存重新构建。最后我把正确的文件复制到docker容器中,然后重新启动容器,问题解决。

  总结:

1、在对docker不熟悉的情况下使用docker会造成很多麻烦;

2、排查问题要思路清晰:已经知道非mysql权限问题(远程能够登录),那么几乎必定是密码错误了,接下来找到密码配置文件就可以。而中间我居然还去搜了搜是否和ipv6有关,来来回回耗费了大半天。

你可能感兴趣的:(linux,docker,数据库)