我正在为未来的项目练习java和数据库之间的连接,但我走到了“死胡同”。
我的问题是我有(系统A:192.168.1.6)和(系统B:192.168.1.254)系统B是托管在VirtualBox中的Windows 10虚拟机(网卡设置为桥)
无论如何,我尝试使用 XAMPP 连接到系统 B 中托管的数据库,但我无法使其在系统 A 中以任何方式工作,这是我尝试连接的当前行:
Connection connect = DriverManager.getConnection("jdbc:mysql://192.168.1.254:3306/caleno", "root", "");
如果我尝试在系统 A 上运行我的程序,它将无法工作,但如果我更改本地主机的 IP 并将其移至系统 B,它将正常运行,对于这种做法,我在哪里运行它并不重要但我想知道如何互连两台计算机,我还将在最后分享一个 github 链接,其中有我项目的当前状态,以防有人想尝试。
我尝试在具有全局访问权限的 xamp 上创建新用户,按照链接 1 中先前所述,并按照链接 2 中所述更改 XAMP 配置
我还尝试了以下代码行(只是为了尝试)
Connection connect = DriverManager.getConnection("jdbc:mysql://192.168.1.254:3306/caleno", "root", "");
Connection connect = DriverManager.getConnection("jdbc:mysql://192.168.1.254:8080/caleno", "root", "");
(这是在完成链接 2 上的相关操作之后,程序冻结并最终出现错误)
Connection connect = DriverManager.getConnection("jdbc:mysql://192.168.1.254/caleno", "root", "");
(我知道这个行不通,但无论如何值得一试)
此外,在 /com/caleno/resources 内部有一个名为 sql 的文件夹,其中有我的数据库的副本(虽然里面只有 1 个表和 1 个注册表)
与我的数据库连接相关的信息位于 java/com/caleno (数据库文件)上,然后在 FXMLDocumentController 上是我使用此连接以便继续的地方
请理解,我只是一名学生,我对这个世界还很陌生,所以如果可能的话,如果您能解释我做错了什么,我将不胜感激,提前非常感谢
转到 Windows 虚拟机 (B) 并找到 MySQL 安装目录,通常类似于
\xampp\mysql\bin\
,文件名为 my.ini。在那里,您需要找到绑定地址参数并将其更改为0.0.0.0
bind-address=0.0.0.0
然后,你的 MySQL 用户应该将主机设置为 % 或你的 PC 的 IP,而不是 localhost。
否则,请在远程 MySQL 服务器上执行此 MySQL 命令。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;