2012-07-13 18 views
0

我使用tomcat和mysql(IDE是eclipse)。 我正在使用連接池。mysql和javax.naming.NamingException

在context.xml中,我有:

<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" 
      maxActive="100" maxIdle="30" maxWait="10000" 
      username="root" password="root" driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://localhost:3306/mydb" 
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" /> 

在我一直在使用中的EasyPHP MySQL的開始(用戶root沒有PWD)。一切正常。 然後我添加了pwd並正確更改了context.xml(就像現在這樣)。

從那時起,我有這些異常:

Unexpected exception resolving reference 
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) 

Failed to register in JMX: javax.naming.NamingException: Access denied for user 'root'@'localhost' (using password: NO) 
lug 13, 2012 9:16:45 AM org.apache.naming.NamingContext lookup 
Unexpected exception resolving reference 
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) 

的「奇怪」的事情是,應用程序在數據庫寫入成功。

我已經卸載了easyphp,並在端口3306上安裝了mysql,並使用pwd root創建了root用戶。

我獲得同樣的例外。

+0

可能重複的[訪問拒絕用戶'root'@'localhost'(使用密碼:YES)(Mysql :: Error)](http://stackoverflow.com/questions/6081339/access-denied-for-user-rootlocalhost-using-password -yes-mysqlerror) – duffymo 2012-07-13 09:40:13

+0

@duffymo:在這種情況下,重置pwd不會改變結果。儘管例外,應用程序訪問數據庫,寫在它上面。 – Sefran2 2012-07-13 10:01:55

+0

如果您仍然遇到問題,請仔細查看Google的回覆。你不是第一個。 – duffymo 2012-07-13 13:09:49

回答

1

我會建議你在你遇到問題時,在你的錯誤信息中粘貼通用的東西&。在最糟糕的情況下,你會感到欣慰的是要知道你並不孤單或第一個;最好你會看到一個簡單的解決你的問題。

,我將這些

mysql的值java.sql.SQLException:拒絕訪問用戶 '根' @ 'localhost' 的

到谷歌搜索,並學到了很多有趣的事情。你也可以。

我的其他建議是爲您的應用程序創建一個單獨的用戶名和密碼,並授予它適當的權限而不是使用root權限。 Root功能強大,不應該發給應用程序,即使應用程序和數據庫都是你的。 Root可以訪問每個表,包括系統表。我更喜歡爲應用程序創建單獨的數據庫,並且僅授予應用程序用戶名和密碼以完成任務所需的權限(例如,除非需要,否則不需要DELETE權限;對錶沒有DROP等)