无法在我的 LAN 上的远程计算机上创建到 MySQL 数据库的连接

问题描述 投票:0回答:0

我已经成功地创建了从使用 Intellij 的 Java 应用程序到本地托管的 MySQL 数据库的连接,但是在使用远程计算机从相同的代码建立相同的连接时遇到了可怕的麻烦。

本地和远程计算机都运行 Windows 11.

我已经完成了以下所有操作:

  1. 仔细检查我的本地连接的连接字符串:
jdbc:mysql://localhost:3306/testdb?autoReconnect=true&useSSL=false&user=TestUser&password=Test#Pass

...和我的远程连接:

jdbc:mysql://192.nnn.nnn.nn:3306/testdb?autoReconnect=true&useSSL=false&user=TestUser&password=Test#Pass
  1. 检查我的 MySQL Connector/J 驱动程序是否存在(mysql.connector-java-5.1.49 在我的外部库列表中)。

  2. 在 Windows 防火墙中创建了一条规则,允许我的客户端通过相关端口 (3306) 访问服务器。

  3. 检查远程主机的IP地址和端口以及用户名和密码都正确。远程计算机的 IP 地址是为该计算机提供的私有 IP 地址,供 LAN 内私人使用。

  4. 我已经使用基于相同 IP 地址、端口、用户名和密码的 MySQL 成功地创建了到远程计算机上数据库的连接。这是否意味着问题不是防火墙问题?

我还将这一行添加到代码 'Class.forName("com.mysql.jdbc.Driver");'结果,即使使用本地主机字符串,代码现在也不再有效,并产生错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。这表明 connection.jar 使用的驱动程序不是 com.mysql.jdbc.driver。 “com.mysql.cj.jdbc.Driver”也是如此。我已经注释掉了这一行,我的本地主机实例(当然)再次正常工作,而远程实例(当然)恢复到 java.sql.SQLException:“找不到适合 jdbc:mysql:.. 。”这一行触发的错误:

myConnection = DriverManager.getConnection(connectionString);

这是我每次尝试从 Java 应用程序中创建远程连接时遇到的主要错误。

如果有人能给我提供一些指导,我将不胜感激。如果我的本地 MySQL Workbench 实例可以使用相同的 IP 地址、端口、用户名和密码成功连接到远程 MySQL 数据库,如果有人能澄清我是否可以假设我的问题不是明显的防火墙问题,我将特别感激。

我一直在寻找解决方案的 jdbc 连接上的许多堆栈溢出问题来来回回。如果我在这个已经讨论很多的问题上添加更多重复内容,我深表歉意。

java mysql jdbc remote-access
© www.soinside.com 2019 - 2024. All rights reserved.