使用Mysql Workbench

时间:2018-06-13 18:04:18

标签: mysql docker

我用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。 它没有帮助。

我通过网址0.0.0.0:3306,localhost:3306和192.168.99.100:3306进行连接。 (我正在使用DockerToolbox,因为Windows 10 Home)。  当我尝试连接时,我得到以下异常: enter image description here

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

  

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',我不知道它是什么。 enter image description here enter image description here

任何人都有任何想法? 也许捕获?或者它存储在某个地方?我删除了图像,再次将其拉出来并没有帮助。键入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 Command。首先尝试的是密码admin第二个null ... 也许是因为我运行的第一个命令有“”-e =“MYSQL_ROOT_PASSWORD = null”?

enter image description here

2 个答案:

答案 0 :(得分:1)

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

MySQL在恢复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

答案 1 :(得分:0)

您的数据库没有收听您提供的任何地址,它正在收听您发布的图片中的容器名称。

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