当前位置: 首页 > 知识库问答 >
问题:

无法连接docker容器上运行的mysql服务器

杨凌
2023-03-14

我正在docker容器中运行sql server`

docker pull mysql/mysql-server:latest

docker run --name=my_sql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql/mysql-server:latest

docker exec -it my_sql mysql -u root -p

#Create table in mysql running in container.
CREATE DATABASE hello_java CHARACTER SET utf8 COLLATE utf8_general_ci;

所有这些都成功完成了。现在,当我尝试使用Java连接到数据库时,我得到了错误。

String url = "jdbc:mysql://192.168.56.101:3306/hello_java";
DriverManager.getConnection(url, "root", "1234");
System.out.println("Connection establised....");

192.168.56.101是我的虚拟机的ip。我正在虚拟机上运行Linux。

我收到通信链路故障错误。

我在谷歌上搜索并找到了一些关于以下链接的解决方案,但没有一个对我有用。

使用JDBC和MySQL解决“通信链路故障”

如何连接docker中作为容器运行的MySQL DB?

我对 /etc/my.cnf文件进行了更改,但似乎没有帮助。

谢谢。

共有1个答案

阎枫涟
2023-03-14

我又做了一些RnD,找到了以下解决方案。

String url = "jdbc:mysql://192.168.56.101:3306/mysql?allowPublicKeyRetrieval=true&useSSL=false";

添加allowPublicKeyRetrieval=true

以下链接对解决方案很有用。

连接Java MySql:不允许检索公钥

https://www.tutorialspoint.com/how-to-disable-establishing-ssl-connection-without-server-s-identity-verification-is-not-recommended-warning-when-connecting-to-mysql-database-in-java

谢谢。

 类似资料:
  • $docker容器运行--名称云--网络雇员-e mysql_root_password=root-e mysql_database=bootdb-d mysql:5.7 spring boot应用程序在本地-我试图在java应用程序和mysql容器之间建立连接: 配置属性: null spring-boot-starter-data-jpa mysql-connector-java-versio

  • 例外情况是: docker-compose文件是: 多克菲乌勒

  • 和DocerFile 很好笑因为...首先,我想把容器的名称“localhost”更改为另一个。但当我改变的时候,我不能运行Spring Bot应用程序,即使从IntelliJ。我在docker中创建了MySql的映像,并尝试在IntelliJ中进行连接。这是warking但当我想使用SpringBoot应用程序在caontainer然后是问题。我还没找到解决办法。我会非常感谢每一个帮助。 我在这

  • 我已经创建了一个MySQL数据库的映像,并在容器中运行它。我希望它在端口3406/3407上运行,因此我调用docker run命令如下所示: 如果我看我的容器,它看起来是这样的: 我非常想连接到我的数据库现在,但我似乎不能使我的URL工作。 这是我的URL的样子:

  • 问题内容: 我有用于创建mysql映像的docker- compose文件,并将端口公开给3306,但是当我尝试安装CMS时,出现了无法连接数据库的错误。我尝试扫描端口3306,并向我显示它已打开,因此mysql正在运行。 为什么两个Docker容器彼此看不到? 这是我的docker-compose文件: 问题答案: 要连接到数据库,请使用您作为主机名提供的链接/别名。因此,您的CMS可以使用主机

  • 我的docker版本是1.13.1。我正试图从我的docker容器连接到redis-server,但我遇到了拒绝连接的错误。详细的日志如下: 原因:redis.clients.jedis.exceptions.jedisconnectionException:java.net.Connection:redis.clients.jedis.Connection(Connection.java:207