2011-11-16 70 views
0

有了這個代碼JDBC/MYSQL:值java.sql.SQLException:拒絕訪問用戶 '根' @ 'localhost' 的(使用密碼:NO)

String url = "jdbc:mysql://localhost/mysql"; 
Connection con = DriverManager.getConnection(url, "root", ""); 

我得到下面的異常。

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) 
    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(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    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(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at MyTest1.main(MyTest1.java:29) 

我登錄到數據庫使用命令工具與root和沒有密碼。我可以telnet到數據庫中,我得到這個消息

N 
5.5.17-log 
      7{*Zj%u☻ǧ|tR}=Vz'L,6imysql_native_password" 

回答

0

原來我的MYSQL安裝有些問題。我卸載了我使用的AMP軟件包,並安裝了XAMPP,它可以正常工作。

+0

那是什麼'AMP'包?我怎麼能卸載它?我爲'php'使用'xampp',我也在本地主機上安裝了'mysql server'。 –

0

'root'@'localhost''root'@'%'不同。它可能仍然是一個權限問題。

我建議您通過控制檯登錄,使用密碼創建'test'@'%'用戶,併爲其提供所有權限。你可以學習如何做到這一點here

0

即使我也面臨同樣的問題。但是,在我的應用程序中,我犯了一個錯誤,就像我忘記了密碼。您可以嘗試手動登錄到您的MySQL並檢查您用來登錄的用戶名和密碼是什麼。您可以在URL中使用相同的詳細信息。最好也給數據庫名稱。至於像下面 對於MySQL:

String url = "jdbc:mysql://localhost:3306/mysql"; 
Connection con = DriverManager.getConnection(url, "root", ""); 

在上面,你忘了給MySQL的端口號。你可以檢查你的MySQL是否有端口號。默認情況下mySQL的端口號是3306.更好地創建和使用自己的數據庫。

如果上述一個不起作用,請嘗試在您的使用數據庫上將所有權限授予root用戶。要授予所有權限,下面是查詢,

GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'localhost' WITH GRANT OPTION; 

否則

GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'localhost' IDENTIFIED BY 'root'; 
相關問題