繁体   English   中英

如何从 Docker 连接到本地 Mysql

[英]How too Connect to Local Mysql from Docker

我有一台在 localhost:3306 上运行 mysql 的 mac。 我正在尝试通过 Spring Beans 应用程序(Java)连接到它,但出现错误。 有人可以帮忙吗? 我在做:

String jdbc_url = "jdbc:mysql://" + hostname + "/" + database;
try (Connection conn = DriverManager.getConnection(jdbc_url, db_username, db_password)) {
... my code here ...
}

我试过 String jdbc_url = "jdbc:mysql://docker-mysql:3306/mydb" 但我得到了:

ocessing failed; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.] with root cause

java.net.ConnectException: Connection timed out

我也试过:“mysql+mysqlconnector://root:mypassword@host.docker.internal:3306/mydb”; 但我得到了错误:

java.sql.SQLException: No suitable driver found for mysql+mysqlconnector://root:mypassword@host.docker.internal:3306/mydb

我也试过:

jdbc:mysql://localhost:3306/mydb

但这也失败了,因为(我认为)本地主机是 docker 容器的本地主机,而不是我的本地机器。

我将从另一个问题开始。 它不完全相同,但答案中的许多概念都适用于您的情况。 如果您仍然有问题,您可能还需要检查本地防火墙以确保它没有阻止端口。

找到了解决方案(谢谢允许 docker 容器连接到本地/主机 postgres 数据库!)

简而言之:

String hostname = "host.docker.internal:3306"; //if your port is not 3306 then naturally change it here
String database = "yourdb";
String jdbc_url = "jdbc:mysql://" + hostname + "/" + database;
try (Connection conn = DriverManager.getConnection(jdbc_url, db_username, db_password)) {
... your code here ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM