【问题标题】:MySQL Connect via proxy in JavaMySQL 通过 Java 中的代理连接
【发布时间】:2011-09-26 13:00:46
【问题描述】:

我正在开发一个客户端-服务器软件,其中客户端连接到数据库服务器如下。

...
try
{
   Class.forName("com.mysql.jdbc.Driver");
   Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root", "LA_PASSWORD");
}catch....
...

两个应用程序始终位于同一个本地网络上。我遇到的问题是本地网络使用代理时,在这种情况下 MySQL 连接失败。

当本地网络上的代理时,如何与 Java 编程语言、MySQL 数据库建立连接?

感谢您的帮助。 问候!

【问题讨论】:

  • “本地网络使用代理”是什么意思?你的意思是HTTP代理吗? MySQL 使用二进制协议而不是 HTTP。连接是否被防火墙阻止?
  • 是的,我的意思是 HTTP 代理。谢谢。
  • @Lobo 您的代理需要用户和 psw 的身份验证???

标签: java mysql jdbc database-connection


【解决方案1】:

尝试使用socksProxyHostsocksProxyPort 系统属性。在“2.4) SOCKS”章节和here 中查看here。 (http.proxyHost 不适用于 JDBC。)这里是使用 JDBC 代理的描述(例如 Oracle):Connect outside internet Oracle Database from inside intranet through JDBC。您可能想要使用属性:socksProxySet, socksProxyPort, socksProxyHost, java.net.socks.username, java.net.socks.password, socksNonProxyHostsHere is description how to set version, username, and password。并且 ofc 你需要 socks 代理,而不是 HTTP

如果您只有 HTTP 代理,您可以尝试通过 HTTP 隧道 JDBC。 解决方案很少。例如这里是免费解决方案http://sourceforge.net/projects/sqlgateway/,这里是商业解决方案http://www.idssoftware.com/jdbcdrv.html

【讨论】:

  • 感谢您的回答。提供的解决方案将重定向所有通过 socksProxyHost 的流量。就我而言,我有两个数据库连接。一个应该通过代理,一个在本地网络上。有什么建议如何处理吗?
  • 我刚刚找到了解决方案。它是一个名为 socksNonProxyHosts 的属性,您可以在其中登记所有排除的主机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 2014-02-23
  • 2018-06-03
  • 2017-09-07
  • 2015-09-13
  • 1970-01-01
相关资源
最近更新 更多