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

How to connect dbeaver with docker instance of mysql locally

我有 运行 那些命令:

docker run --name mysql-standalone -e 
MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password -d mysql:5.6

然后

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

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

我哪里做错了?

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

docker stop <container id>
docker rm <container id>

然后 运行 容器再次使用端口映射。使用 -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

此时 dbeaver 连接应该可以正常工作。

说明
您的 mysql 服务器 运行 正在 docker 容器内的端口 3306 中。这个端口是 inside 那个容器,而不是你的主机。 Dbeaver 不知道该容器,它会尝试连接您的主机(您的 laptop/pc)端口。使用 -p 3306:3306 将容器端口映射到计算机端口。