Docker MySQL connection DBeaver
Instead of giving localhost_compliant-db
as the Server Host in dbeaver, try giving it localhost
.
3306
port is bind on the host machine as well hence localhost:3306
from your host machine should work.
PS - I presume dbeaver and docker compose stack both are on the same machine. If not, you need to map localhost_compliant-db
to certain IP which your host machine can understand.
For those who are running DB on different machine, you can do the following:
First, from where the container is, run docker ps
to get the containers details including the Container ID
[root@test-001 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b02333fb3b9 tutum/nginx "/usr/sbin/nginx" 6 weeks ago Up 7 days 0.0.0.0:80->80/tcp docker_nginx_1
8c1d234a3731 mariadb "docker-entrypoint.s…" 6 weeks ago Up 7 days 0.0.0.0:3306->3306/tcp docker_mysql_1
After you get the ID of your database container, run docker inspect CONTAINER_ID
to get the related IP address of that container.
[root@test-001 ~]# docker inspect 8c1d234a3731 | grep -i IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.23.0.3",
On Dbeaver, after selecting the DB type on adding new connection window, Go to network settings (SSH, ...)
then put your docker machine details. and from the main page, in the Server Host:
add the IP you got from the docker inspect
command, then your credentials.
This should work
In my case I was using DBBeaver to connect to MariaDB on port 3306 however my container port was not mapped to my local 3306 port so I just needed to add the ports config into the docker-compose.yml
ports:
- "3306:3306"