如何在Docker中连接运行为容器的MySQL数据库?

5

请问有人知道如何连接在虚拟机上作为Docker容器运行的MySQL数据库吗?

我对此一无所知,请帮帮我。

我的目标是:我正在本地编写Java程序,现在想要与MySQL建立JDBC连接。我的MySQL数据库作为Docker容器在虚拟机上运行。

是否有人有任何想法呢?

连接代码示例:

Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.15/这里应该填什么","root","myrootpassword");

我的容器IP地址为172.17.0.2,我的宿主机IP地址为10.0.2.15,MySQL运行在3306端口。

谢谢!


在 Docker 容器中连接 MySQL 的方式与连接非 Docker 容器中运行的 MySQL 相同。 - Mark Rotteveel
2个回答

6
您的Docker容器应该能够将其MySQL端口绑定到VM上的任何端口。您可以使用docker run命令中的-p VMPort:containerPort选项来实现这一点。
详情请参考https://docs.docker.com/engine/reference/run/#expose-incoming-ports
因此,下面这条命令:
docker run -p 3306:3306 your-sql-container

将您的容器的3306端口发布到虚拟机的3306端口。 此时,您应该可以使用以下代码访问SQL:
Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.15:3306/databaseName","root","myrootpassword");

我使用了您的虚拟机地址和虚拟机上绑定的端口号。您应该将databaseName替换为您实际的数据库名称。

1
你需要在这里放置数据库名称。 conn = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password"); 查看此链接
此外,在连接器中添加端口也不会有坏处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接