java - 尝试从虚拟机(Java)连接mysql数据库

标签 java mysql ubuntu virtual

我正在尝试显示 empleados 表中的数据。该表位于 ucol 数据库内,该数据库位于 Ubuntu 虚拟机中。我已经配置了仅主机网络,它可以双向执行 ping 操作。但是当我运行该程序时,它捕获了一个异常

static final String controlador = "com.mysql.jdbc.Driver";
static final String direccion = "jdbc:mysql://192.168.1.73:3306/ucol";
static final String usuario = "user";
static final String clave = "pass";  

public static void main(String[] args) {
   Connection conexion = null;
   Statement consulta = null;
   String sql;

   int id;
   String nombre;
   String apellidos;
   double salarios;

   try {
       System.out.println("Connecting...");
       Class.forName(controlador);
       conexion = DriverManager.getConnection(direccion, usuario, clave);
       consulta = conexion.createStatement();
       System.out.println("Connection done.");


       sql = "SELECT id, nombre, apellidos, salarios FROM empleados;";
       ResultSet resultado = consulta.executeQuery(sql);

       while(resultado.next()) {
           id = resultado.getInt("id");
           nombre = resultado.getString("nombre");
           apellidos = resultado.getString("apellidos");
           salarios = resultado.getInt("salarios");

           System.out.println("\nID: " + id 
                   + "\tNombre: " + nombre 
                   + "\tApellido: " + apellidos
                   + "\tSalarios: " + salarios);
       }

       resultado.close();
       consulta.close();
       conexion.close();
   }
   catch(Exception e) {
       System.err.println("Error at showing: " + e.toString());
   }
   finally {
       try {
           if(consulta != null)
               consulta.close();
           if(conexion != null)
               conexion.close();
       }
       catch(Exception e) {
           System.out.println("Error at closing: " + e.toString());
       }
   }
}

这是输出:

Connecting
Error at showing: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection timed out: connect

STACKTRACE:

java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:241)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at Consulta.main(Consulta.java:37)


** END NESTED EXCEPTION **



Last packet sent to the server was 2 ms ago.

以下是在虚拟机上显示 ifconfig 的方式:

eth0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
         Direc. inet: 192.168.1.73 Difus.192.168.1.55 Másc.: 255.255.255.0
         ~~~~~~~~~~~~~~~~~~~~~~~~~~
         ~~~~~~~~~~~~~~~~~~~~~~~~~~

我错过了什么吗?

最佳答案

我发现了问题,我停止了虚拟机上的ufw服务。

sudo service ufw stop

关于java - 尝试从虚拟机(Java)连接mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26937487/

相关文章:

Java Spring Framework jmx 托管注释@ManagedAttribute 未在 MBeanServerConnection/Jconsole/Visual vm/bean 列表中显示方法

java - StringToWordVector过滤器weka

c# - Restful Web 服务中的 URL

PHP MySQL 使用 GET 方法插入

GitHub 自动部署到 Ubuntu 服务器

java - 如何获取特定运行的方法/函数调用跟踪?

mysql - 替换mysql中多个表中的多个字符串

mysql - 将 SQL 中的上下文数据的所有行分组为单行

python - 在 ubuntu 14.04 上使用 python 版本安装 MORSE 模拟器的问题

c++ - C++ 中 atomic<uint64_t> 数据类型的格式说明符是什么?