【问题标题】:How to access a remote mysql database using java如何使用java访问远程mysql数据库
【发布时间】:2012-01-30 14:10:26
【问题描述】:

我已经开发了一个JAVA SWING 应用程序。我想在几台计算机上安装这个应用程序,所有这些计算机都可以访问互联网。 那么我应该把我的 MYSQL 数据库放在哪里呢?所有这些计算机都应该能够通过互联网访问同一个数据库。

【问题讨论】:

    标签: java mysql


    【解决方案1】:

    出于安全(身份验证授权、加密)和性能原因,允许直接通过 Internet 访问数据库并不常见。在大多数情况下,您将创建一个基于 Web 的服务器应用程序,该应用程序可以执行数据库操作,执行业务、域和安全规则。客户端应用程序通过 Internet 进行调用(使用 REST 调用、AJAX 调用或专有的东西),并从服务器获取结果。

    在您的情况下,由于您的客户端软件是 Java,您可能需要研究 Java Servlets 并运行像 Tomcat 这样的轻量级服务器。

    请参阅this pagethis page 了解客户端-服务器关系的说明。

    【讨论】:

    • 谢谢。我知道创建一个网站可以达到这个目的,但我已经创建了 SWING 应用程序。
    • 你误解了我的意思。我说的是您的 Swing 应用程序将调用以获取其数据的服务器端应用程序。我在末尾添加了链接来解释如何以及为什么。
    【解决方案2】:
    1. 将您的数据库放在可通过 Internet 访问的主机中。
    2. 为每个Applicaton主机的每个外部IP地址在mysql上创建一个用户。

      GRANT ALL PRIVILEGES TO database.* to `user1`@`APPLICATION_HOST_IP` identified by 'PASSWORD';
      

    现在user1 将可以从APPLICATION_HOST_IP IP 访问。

    【讨论】:

    • 我使用了一个名为“Hamachi”的VPN客户端来获取静态IP。
    【解决方案3】:

    好吧,可能性是无限的。您可以将它放置在其他人可以访问的每台计算机上。只要您可以通过网络访问数据库,它在哪里并不重要。但是,如果您的客户端 Swing 的计算机都连接在 LAN 中,则将 DB 存储在性能最佳的计算机上。 作为提示,请使用 IP,并从文本或条目中动态端口,因此每次更改 IP 时不要重新编译。 奇尔斯!!

    【讨论】:

    • 这更像是 :) 现在我的数据库存储在一台连接到 LAN 的计算机上。但是还有一些计算机没有连接到这个 LAN,因为它们位于其他地方。如果这些计算机想通过 Internet 连接到数据库,如何设置 IP 地址?谢谢
    • 如果你真的想走这条路,你可以让远程用户 VPN 进入局域网(见en.wikipedia.org/wiki/Virtual_private_network)。不过,我仍然建议在应用程序和数据库之间使用服务器组件。
    • 我同意 dj_segfault.... 具有代理架构的 VPN... 但是解决您的问题最简单的方法很简单,只需选择一个提供数据库可能性的主机,并将其放在该服务器上。我会假设您不使用复杂的事务,所以这不会是一个巨大的问题.. 但我强烈建议给每个摇摆应用程序不同的用户,并关闭自动提交,并处理事务。
    • 好的,我会试试,还有一个问题!如何从文本或条目中动态使用 IP 和端口?
    • 在与 DriverManager.getConnection(IP:PORT) 建立连接之前,您需要 IP 和端口,您可以将它们保存在 ip = XXX.XXX.XXX.XXX port = XXXXX 的属性文件中,并且使用 getResource 读取属性 .... 因此,每当您需要设置新 IP 时,您无需重新编译只需更改属性文件 .... 如果您觉得这有帮助,请检查我的答案是否有用,给我一个点它:D
    猜你喜欢
    • 2015-05-15
    • 1970-01-01
    • 2015-02-02
    • 2013-05-03
    • 2017-09-02
    • 2010-12-14
    • 2014-05-22
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多