无法连接运行在Docker容器上的MySQL服务器。

18 浏览
0 Comments

无法连接运行在Docker容器上的MySQL服务器。

我在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
#在容器中运行的MySQL中创建表。
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("连接已建立....");

192.168.56.101是我的虚拟机的IP地址。我在虚拟机上运行Linux。

我得到了通信链接失败的错误。

我在Google上搜索并在以下链接中找到了一些解决方案,但都没有对我起作用。

解决JDBC和MySQL的“通信链接失败”

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

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

谢谢。

0
0 Comments

文章内容如下:

在尝试连接运行在Docker容器上的MySQL服务器时,我遇到了连接失败的问题。经过一番研究和探索,我找到了以下解决方案。

首先,我修改了连接字符串,添加了以下参数:

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

通过在连接字符串中添加allowPublicKeyRetrieval=true&useSSL=false参数,我成功地连接到了数据库。

在解决问题的过程中,我参考了以下链接的内容,它们对我产生了帮助:

- [Connection Java-MySql: Public Key Retrieval is not allowed](https://stackoverflow.com/questions/50379839)

- [How to Disable Establishing SSL Connection Without Server's Identity Verification is Not Recommended Warning When Connecting to MySQL Database in Java](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)

感谢以上链接提供的解决方案。

0