java - 无法从 Ubuntu 上的 Java 程序连接到本地主机上的 MySQL

标签 java mysql jdbc

代码如下。

import java.sql.*;

public class ActivityReader {
    public static void main(String[] args) {
                      System.out.println("MySQL Connect Example.");
              Connection conn = null;
              String url = "jdbc:mysql://localhost:3306/";
              String dbName = "jdbctutorial";
              String driver = "com.mysql.jdbc.Driver";
              String userName = "root"; 
              String password = "password";
              try {
                  Class.forName("com.mysql.jdbc.Driver").newInstance();
                  conn = DriverManager.getConnection(url,userName,password);
                  System.out.println("Connected to the database");
                  conn.close();
                  System.out.println("Disconnected from database");
              } catch (Exception e) {
                      e.printStackTrace();
              }
    }

} 

我已经在 this url 的项目中添加了 mysql-connector-java-5.1.20-bin.jar . Mysql 服务已经在运行。

mysql start/running, process 25326

MySQL 连接示例。

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.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:348)
    at c

om.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2391)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2428)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2213)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:797)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at ActivityReader.main(ActivityReader.java:45)
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.<init>(Socket.java:375)
    at java.net.Socket.<init>(Socket.java:218)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298)
    ... 15 more

有什么想法.... ??????

最佳答案

使用 127.0.0.1 而不是 localhost 进行连接,这可能是您系统上正在发生的事情的线索:

MySQL will try to connect to the unix socket if you tell it to connect to "localhost". If you tell it to connect to 127.0.0.1 you are forcing it to connect to the network socket. So probably you have MySQL configured to only listen to the network socket and not to the file system socket.

https://serverfault.com/questions/295285/mysql-cannot-connect-via-localhost-only-127-0-0-1

关于java - 无法从 Ubuntu 上的 Java 程序连接到本地主机上的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11117009/

相关文章:

java - 如何在 Tomcat 中设置服务器日志位置

java - 防止目录被删除

mysql - 使用 Node.JS 和 EJS 遍历数组

mysql - 如何访问 Kubernetes 中的复制数据库?

jdbc - 将 HiveServer2 指向 MiniMRCluster 进行 Hive 测试

java - Hibernate ReturningWork<Long> 接口(interface)的用途是什么?

java - 缺少一些东西来完成我的程序

java - 用 Java 制作 Windows 任务栏跳转列表

php - Jquery 自动完成每个单词

java - JDBC ResultSet getDate 失去精度