我嘗試連接到我的Mac上的MySQL數據庫。這個MySQL與MAMP一起安裝。當使用phpMyAdmin和CLI時,我可以連接到數據庫。但是,當我試圖用Java來連接,這種錯誤發生:訪問被拒絕用戶'admin'@'localhost'(使用密碼:YES)
java.sql.SQLException: Access denied for user 'admin'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:926)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4732)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1340)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2506)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
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:409)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at Hello.main(Hello.java:11)
這裏是我的Java代碼:
import java.sql.Connection;
import java.sql.DriverManager;
public class Hello {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
//String url ="jdbc:mysql://localhost/xinandasai?user=root&password=root&useUnicode=true&characterEncoding=8859_1";
//Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/xinandasai","admin","cosmo");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/xinandasai?" + "user=admin&password=cosmo");
//Statement statement = conn.createStatement();
//statement.execute("INSERT INTO test (user) VALUES ('"+user+"')");
//conn.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
我已經檢查了配置。我確信這些問題:
用戶名和密碼是正確的,因爲它們在使用CLI時是正確的。
的所有特權是通過使用SQL語句授予: 「GRANT ALL PRIVILEGES ON TO '管理員' @ 'localhost' 的IDENTIFIED BY WITH GRANT OPTION 'COSMO'。」
我該如何解決這個問題?
它可能與版本有關嗎?我的MySQL版本是5.5.25。和連接器版本是5.1.30
@JqueryLearner不幸的是,這種方法也失敗了。同樣的例外被提出。 – cosmozhang
我安裝了MySQL Community Edition的完整版本並在端口3307上運行(與MySQL的端口3306不同)已經存在)。我成功地用相同的程序連接到較新的MySQL。所以我認爲這個問題來自MAMP所做的一些限制。 – cosmozhang