使用mysql工作台连接到mysql容器

使用mysql工作台连接到mysql容器,mysql,docker,Mysql,Docker,我成功地用commad创建了docker docker run--命名my db-d-p 3306:3306-v /e/DockerData/mysql:/var/lib/mysql-e=“mysql\u ROOT\u PASSWORD=null”mysql 只是为了测试我是否必须键入字符串“null”作为密码;) 成功了。使用 docker exec-它是我的db bash 然后 mysql-p 我可以连接到mysql命令行。然而,当我试图通过workbench运行它时,它不起作用。我从我的计

我成功地用commad创建了docker

docker run--命名my db-d-p 3306:3306-v /e/DockerData/mysql:/var/lib/mysql-e=“mysql\u ROOT\u PASSWORD=null”mysql

只是为了测试我是否必须键入字符串“null”作为密码;) 成功了。使用

docker exec-它是我的db bash

然后

mysql-p

我可以连接到mysql命令行。然而,当我试图通过workbench运行它时,它不起作用。我从我的计算机上删除了workbench和整个MySql,因为这可能会导致问题。然后我只重新安装了Workbench。 这没有帮助

我是通过URL 0.0.0.0:3306、localhost:3306和192.168.99.100:3306连接的,但没有一个有效。(由于Windows 10 Home,我正在DockerToolbox上工作)。 当我尝试连接时,出现以下异常:

有趣的是,如果我停止并删除图像,并使用以下方法创建容器:

docker run--命名my db-p 3306:3306-v /e/DockerData/mysql:/var/lib/mysql-e mysql\u ROOT\u PASSWORD=admin-e MYSQL\u DATABASE=testDB-d MYSQL

在进入docker exec-it my db bash和mysql-p时,我仍然需要使用密码“null”,我不知道会发生什么。

有人知道吗? ​也许能抓住?或者它被储存在某个地方?我删除了这个图像,再次拉了拉,但并没有起到任何作用。输入null作为密码有帮助,管理员不需要

日志:

​ ​我删除了容器和图像。再拉一次,运行docker命令。第一次尝试是密码管理第二次为空… 可能是因为我运行的第一个命令有“-e=”MYSQL\u ROOT\u PASSWORD=null“


您的数据库没有监听您提供的任何地址,而是监听您发布的图片中的容器名称


您可以将容器主机名添加到主机文件中,例如:1326xxxxxx 192.168.99.100(我假定它是运行容器的主机ip地址),或者您可以在容器运行时传递--主机名mydb并将其添加到主机文件中。

我找到了解决方案,我希望它能帮助某些人:

MySQL在relese 8.0之后更改其身份验证样式是很有必要的 运行旧版本可以解决此问题:

docker run --name my-db -p 3306:3306 -v
/e/DockerData/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin -e
MYSQL_DATABASE=testDB -d mysql:5.7.22

尝试连接到127.0.0.1我在Mac上用SequelPro.docker运行时使用它——命名为my db-p 3306:3306-v/e/DockerData/mysql:/var/lib/mysql-e mysql\u ROOT\u PASSWORD=admin-e mysql\u DATA BASE=testDB——主机名192.168.99.100-d mysql是的,容器在192.168.99.100:3306上运行(我们可以在命令中看到端口已发布)我添加了主机名,它出现在docker环境中。然而,我仍然无法连接。我也不明白,为什么我仍然需要为mysql输入'null'password@Thamiar您是否在容器的开头尝试了其他密码而不是null,然后尝试使用该密码进行连接?
docker run --name my-db -p 3306:3306 -v
/e/DockerData/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin -e
MYSQL_DATABASE=testDB -d mysql:5.7.22