Docker部署MySQL后登录报错:Keyring migration failed
问题解决:Docker MySQL容器连接失败的错误处理
错误原因
你第二个命令的写法有误:当运行docker run ... mysql -h localhost -u root -p时,-h localhost -u root -p会被当作MySQL服务(mysqld)的启动参数传递给镜像的默认entrypoint,而非MySQL客户端的执行命令。这导致镜像尝试启动新的mysqld实例,参数不匹配引发keyring迁移配置错误,自然无法进入客户端交互环境。
正确的两种解决方法
方法一:直接进入运行中的MySQL容器执行客户端
第一个容器MySql_EC已在运行,直接用docker exec进入该容器执行MySQL客户端命令:
docker exec -it MySql_EC mysql -u root -p
输入密码ecdev后即可进入MySQL交互式环境。
方法二:通过自定义Docker网络跨容器连接
如果需要用单独容器连接第一个MySQL服务,需让两个容器处于同一个Docker网络(默认bridge网络不支持容器名解析):
- 创建自定义网络:
docker network create mysql-net
- 修改第一个容器的启动命令,加入自定义网络:
docker run -it --rm --name MySql_EC ` --network mysql-net ` -e MYSQL_ROOT_PASSWORD=ecdev ` -v MySql_ec:/var/lib/mysql:rw ` mysql
- 启动第二个容器,通过容器名
MySql_EC连接服务:
docker run -it --rm --name mysql2 ` --network mysql-net ` mysql mysql -h MySql_EC -u root -p
这里第二个mysql是指定在容器内执行MySQL客户端命令,输入密码后即可进入交互环境。
内容的提问来源于stack exchange,提问作者kalleguld
相关产品推荐
相关产品推荐

