如何在本地连接dbeaver和mysql的docker实例

5 mysql dbeaver docker

我已经运行了这些命令:

\n
docker run --name mysql-standalone -e \nMYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password -d mysql:5.6\n
Run Code Online (Sandbox Code Playgroud)\n

然后

\n
 docker ps\nCONTAINER ID   IMAGE       COMMAND                  CREATED       STATUS       PORTS      NAMES\n35da304532c8   mysql:5.6   "docker-entrypoint.s\xe2\x80\xa6"   4 hours ago   Up 4 hours   3306/tcp   mysql-standalone\n    docker exec -it mysql-standalone bash\n    root@35da304532c8:/# mysql -uroot -p -A\n    Enter password:\n    Welcome to the MySQL monitor.  Commands end with ; or \\g.\n    Your MySQL connection id is 6\n    Server version: 5.6.51 MySQL Community Server (GPL)\n    \n    Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.\n    \n    Oracle is a registered trademark of Oracle Corporation and/or its\n    affiliates. Other names may be trademarks of their respective\n    owners.\n    \n    Type \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the current input statement.\n    \n    mysql>\n
Run Code Online (Sandbox Code Playgroud)\n

但是在尝试通过 dbeaver 连接时我得到了这样的东西

\n

在此输入图像描述

\n

我哪里做错了?

\n

Moh*_*lam 9

停止现有的 mysql 容器并将其删除:

docker stop <container id>
docker rm <container id>
Run Code Online (Sandbox Code Playgroud)

然后使用端口映射再次运行容器。用于-p 3306:3306将容器端口映射到主机端口。

完整的命令将是这样的:

docker run --name mysql-standalone -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password -p 3306:3306 -d mysql:5.6
Run Code Online (Sandbox Code Playgroud)

这次 dbeaver 连接应该可以工作。

说明
您的 mysql 服务器正在 docker 容器内的端口 3306 中运行。该端口位于该容器,而不是您的主机内。Dbeaver 不知道该容器,它尝试连接您的主机(您的笔记本电脑/个人电脑)端口。使用-p 3306:3306您将容器端口映射到您的计算机端口。