docker run -d \
--name mysql_ooblog \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=xxx \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql
运行以上代码时,mysql实例正常运行,但是在远程连接时提示密码不正确。
运行docker exec -it mysql_ooblog bash进入容器内部时,发现使用密码xxx确实无法进入到mysql,在尝试几个历史密码后误打误撞成功。
解决:原来是把mysql配置目录挂载的本机目录有之前的数据,把挂载的三个文件夹都清一下就好了。
此外,在额外分享一些其他新手初学docker的bug,希望能给你帮助。
1. exec进入容器内部后可以用密码xxx登录,但是在外部连接时不行,这种情况可以在内部看一下名为mysql的数据库的user表,看host字段为%的一列是否都为N,如果是,那代表外界无法访问,可以手动改成Y。
2.docker run后发现docker ps命令找不到刚刚run的实例,大概率是容器创建报错而自动exit,用docker ps -a就可以看到容器当前处于什么状态,然后用docker logs (容器名) 命令查看错误日志排查。
3.手动更改mysql密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';
如有错误请在评论区指出,多谢。