【问题标题】:Running a Java program that connects to a localhost database on a different computer运行连接到另一台计算机上的本地主机数据库的 Java 程序
【发布时间】:2014-03-13 14:37:07
【问题描述】:

我已经使用以下代码将我真正基本的 Java 应用程序连接到我计算机上的 Wamp 服务器

try {  
        Class.forName("com.mysql.jdbc.Driver");  
        Connection connection = DriverManager.getConnection(  
                "jdbc:mysql://localhost:3306/project", "root", "password");

显然,这个程序在我的电脑上运行,但没有其他人的,我需要将此作为项目提交。

我是否可以修改这部分,以便我的伙伴和老师可以在他们的计算机上运行代码,而无需下载任何特殊软件,并访问我本地主机上的数据库?可能喜欢用//my IP address:8080 替换//localhost:3306

我得到的所有建议都涉及网络,我对此一无所知,所以我不想尝试然后弄乱我的电脑,除非我真的确定

我已经研究过但不确定的事情:

  • C:/wamp/alias/phpmyadmin.conf 并输入行ALLOW (other person's IP)
  • 团队查看器(需要另一台计算机使用我的程序以外的软件)
  • 打开我的路由器端口以接收传入请求

任何事情都会对人们有所帮助,即使只是确认没有一些网络就无法完成。 如果这是一个没有经验的人可以做的事情,我会接受。

【问题讨论】:

  • 你试过了吗://my IP address:3306?假设没有任何防火墙或路由问题。
  • 如果您的老师正在做这样的作业,那么他们可能会详细说明您将如何提交您可能错过的项目。
  • @North 如果他们应该在自己的计算机上拥有数据库,请提供一种配置路由的方法(如 .properties 文件),如果没有,您可以考虑为您的应用程序使用嵌入式 mysql 服务器,或者找到你的外部IP地址whatsmyip.org,然后在你的路由器上打开3306端口
  • 我确实尝试过//my IP,但是当我在我的系统上运行它时它会产生某种环回错误,所以我不能确定

标签: java mysql localhost remote-access


【解决方案1】:

除了您尝试过的之外,您还需要授予访问数据库的权限。

尝试向来自其他 IP 地址的用户授予权限。

阅读文档GRANT Syntax

示例

GRANT ALL ON test.* TO '%'@'localhost' ...
GRANT ALL ON test.* TO '%'@'%' ...
GRANT ALL ON test.* TO 'ravinder'@'192.168.1.105' ...
etc...

还有其他形式可以将特定数据库对象的访问权限授予从特定计算机或所有计算机连接的特定用户或所有用户。
我建议您选择适合您需要的那个。

但是,请记住,'%'@'%' 将允许来自所有系统的所有用户。

授予权限后,将连接字符串的 dbURL 值更改为您的 IP 地址。

Connection connection = 
DriverManager.getConnection(  
                "jdbc:mysql://your_system_ip_or_name_here:3306/project",
                "root", "password");

在所需系统上部署重新生成的应用程序,它应该可以工作。

【讨论】:

  • 我想我不清楚,当我说“我调查的事情”时,我的意思是那些是我在寻找答案时阅读的内容,但它们都需要 a) 另一个拥有数据库服务器的人在他们的计算机上或 b) 打开一个端口,这是我不想做的事情。那么您是说仅使用 GRANT 就可以在其他计算机不在同一网络上、没有数据库或我的端口打开的情况下进行访问?
  • 您需要选项 b,并且也需要授予。
猜你喜欢
  • 1970-01-01
  • 2023-02-24
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多