首页 > 解决方案 > 使用 Mysql Workbench 连接到 mysql 容器

问题描述

我用 commad 成功创建了 docker

docker run --name my-db -d -p 3306:3306 -v /e/DockerData/mysql:/var/lib/mysql -e="MYSQL_ROOT_PASSWORD=null" mysql

只是为了测试我是否必须输入 String 'null' 作为密码;)它起作用了。使用

docker exec -it my-db bash

接着

mysql -p

我可以连接到 mysql 命令行。但是,当我尝试通过工作台运行它时,它不起作用。我从我的计算机中删除了工作台和整个 MySql 的东西,因为它可能会引起问题。然后我只重新安装了 Workbench。它没有帮助。

我通过 url 0.0.0.0:3306、localhost:3306 和 192.168.99.100:3306 进行连接,但它们都不起作用。(由于 Windows 10 Home,我正在使用 DockerToolbox)。当我尝试连接时,我得到了这个异常: 在此处输入图像描述

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

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

输入 docker exec -it my-db bash 然后 mysql -p 时我仍然需要使用密码“null”
,我不知道会发生什么。 在此处输入图像描述 在此处输入图像描述

有人知道吗?​也许会抓到?或者它存储在某个地方?我删除了图像,再次将其拉出,但没有帮助。输入 null 作为密码会有所帮助,管理员不会马赫。

日志:

$ docker logs -f 132646ed8949
2018-06-13T17:53:31.961392Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2018-06-13T17:53:31.961823Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.11) starting as process 1
mbind: Operation not permitted
2018-06-13T17:53:32.728416Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2018-06-13T17:53:32.747107Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2018-06-13T17:53:32.782912Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.infoschema@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.783958Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.784429Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.785231Z 0 [Warning] [MY-010315] [Server] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.786186Z 0 [Warning] [MY-010323] [Server] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.786320Z 0 [Warning] [MY-010323] [Server] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.786380Z 0 [Warning] [MY-010311] [Server] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.798621Z 0 [Warning] [MY-010330] [Server] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.799734Z 0 [Warning] [MY-010330] [Server] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
2018-06-13T17:53:32.811232Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.11'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

​​我删除了容器和图像。再拉一次,运行 docker 命令。第一次尝试是密码 admin 第二个 null ......也许是因为我运行的第一个命令有“” -e="MYSQL_ROOT_PASSWORD=null" ?

在此处输入图像描述

标签: mysqldocker

解决方案


我找到了解决方案,希望对某人有所帮助:

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

推荐阅读