【问题标题】:Connect to mysql remote database using JDBC?使用 JDBC 连接到 mysql 远程数据库?
【发布时间】:2012-10-20 08:59:13
【问题描述】:

我是一名 java 初学者,我正在开发一个使用 JDBC 连接到远程 mysql 数据库的简单应用程序。我已经在本地对其进行了测试,它工作得很好,但是我无法让它在我的远程服务器上工作。 我认为它没有多大用处,但代码如下:

Connection connection = null;
String dburl = "jdbc:mysql://314159265:3306/Db_Name";
String userName = "user";
String passWord = "password";

    try {
        Class.forName("com.mysql.jdbc.Driver");

        connection = DriverManager.getConnection(dburl, userName, passWord);
        Statement st = connection.createStatement();                                 

        String query = "INSERT INTO Example (`TestColumn`) VALUES('hello')";
        int rsI = st.executeUpdate(query);
        System.out.println("Hi");
        }catch (Exception e) {
        System.out.println(e);
    } finally {
        if (connection != null) {
            try {
                connection.close();
                System.out.println("Database connection terminated");
            } catch (Exception e) { /* ignore close errors */ }
        }
    }

当我运行它时,我收到以下消息:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago.The driver has not received any packets from the server.

我很确定这一定是某种服务器配置问题。

 Notes:
 Username, password, IP, database name, etc. are just examples.

【问题讨论】:

  • 这里只是猜测,但您的主机真的是 314159265 吗?那应该是某种 IP 还是真的是 DNS 名称?
  • 在访问驱动程序之前,您是否必须设置某种 ssh/ssl 隧道到远程服务器?另外 - 您可以使用客户端系统上的远程查询浏览器访问数据库吗?从内存中我认为你必须配置它以便暴露数据库,默认情况下我很确定数据库只能在本地主机上使用,所以当你连接到 JDBC 时你会被拒绝。我敢打赌你的 java 代码和数据库在同一台服务器上工作
  • 你能从你的机器(你运行那个程序的地方)到达那台机器31415...吗?尝试在端口 3306 上 ping 该“地址”或 telnet 进入它
  • 你试过 st.execute(query);而不是 int rsI = st.executeUpdate(query);
  • 您是否已将远程数据库配置为接受来自该用户和主机的远程连接?

标签: java mysql jdbc connection


【解决方案1】:
  1. 这可能是防火墙问题或配置问题。但我认为这根本不是编码问题 - 您需要开始对连接进行故障排除。

  2. 通过尝试使用第三方客户端应用程序连接到 mysql 来解决问题。这将指示它是否配置为外部访问。虽然它不能确保 JDBC 从外部可见,但它确实排除了一些潜在的防火墙问题。

  3. 按照本指南帮助您搞乱您的配置

Remote MYSQL Database Access

如果您仍然卡住,可能是编码问题,请查看此页面:

How to connent to a remote mysql database with java?

附:我假设您使用的是 unix 作为操作系统。

【讨论】:

  • 原来主机提供商正在阻止与数据库的远程连接
  • 甜蜜 - 很高兴你把它整理好了 :)
【解决方案2】:

我猜 314159265 可以用某个地址代替.... 像 jdbc:mysql://localhost:3306/ 或 jdbc:mysql://127.0.0.1:3306/

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多