java - 使用java连接mysql时出现错误

标签 java mysql connection

我正在使用 java 连接到 mysql。如果我使用安装了 mysql 的同一台电脑连接到 mysql,它工作正常。但是当我从另一台电脑连接到该 mysql 实例时,我的访问被拒绝。 我提到两台电脑都在同一个网络中。

public class Temp {

    // JDBC driver name and database URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://192.168.0.96:3306/mobile_erp_db";

    // Database credentials
    static final String USER = "evokanti";
    static final String PASS = "evosys12";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            // STEP 2: Register JDBC driver
            Class.forName("com.mysql.jdbc.Driver");

            // STEP 3: Open a connection
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // STEP 4: Execute a query
            System.out.println("Creating statement...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT * FROM menu";
            ResultSet rs = stmt.executeQuery(sql);

            // STEP 5: Extract data from result set
            while (rs.next()) {
                // Retrieve by column name
                String first = rs.getString(2);

                // Display values
                System.out.println(", first: " + first);
            }
            // STEP 6: Clean-up environment
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // Handle errors for JDBC
            System.out.println("SQLException");
            se.printStackTrace();
        } catch (Exception e) {
            // Handle errors for Class.forName
            System.out.println("Exception");
            e.printStackTrace();
        } finally {
            // finally block used to close resources
            try {
                if (stmt != null)
                    stmt.close();
            } catch (SQLException se2) {
            }// nothing we can do
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }// end finally try
        }// end try
        System.out.println("Goodbye!");
    }// end main
}// end class

连接网络电脑时的输出。

java.sql.SQLException: Access denied for user 'evokanti'@'EVOKANTILALR' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
    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:381)
    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 com.db.Temp.main(Temp.java:30)

在上面的错误中,第一行是:

java.sql.SQLException: Access denied for user 'evokanti'@'EVOKANTILALR' (using password: YES) 

其中 evokanti 是用户名,EVOKANTILALR 是我的电脑名称。

但我不知道为什么它需要我的电脑名称,即 EVOKANTILALR 连接????

最佳答案

确保用户已正确创建并拥有权限,例如:

CREATE USER 'evokanti'@'%' IDENTIFIED BY 'password';
GRANT ALL ON evokanti.* TO 'evokanti'@'%';

关于java - 使用java连接mysql时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27419103/

相关文章:

java - Spring Security部署错误

java - 如何将 String ArrayList 更改为 Double ArrayList?

MySQL:按随机顺序返回前 16 个结果

php - 查询多个表 MySQL 不同大小的 JSON 输出

android - BLE 设备在完美运行数周后停止与 Android 连接

Java Swing 和 Postgres 用户身份验证 : Close old connection when new connection opened

java - 服务 onCreate 和 onStartCommand 不运行

java - 在 CDH4 示例上运行 map reduce 作业

mysql - 找不到 Coldfusion EntityLoad get 方法,但使用 EntityLoadByPK 时,get 方法可以工作

database - AbstractMultiTenantConnectionProvider,选择ConnectionProvider