mysql和javax.naming.NamingException

时间:2012-07-13 09:32:41

标签: java mysql eclipse tomcat connection-pooling

我正在使用tomcat和mysql(ide是eclipse)。 我正在使用连接池。

在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)

“奇怪”的是应用程序成功写入db。

我已经卸载了easyphp,我在端口3306上安装了mysql,创建了具有pwd root的root用户。

我获得了相同的例外。

1 个答案:

答案 0 :(得分:1)

我建议你切断&amp;遇到问题时,将常规内容粘贴到错误消息中。在最坏的情况下,你会得到安慰,要知道你并不孤单或是第一个;充其量你会看到解决问题的简单方法。

我粘贴了这个

  

mysql java.sql.SQLException:用户'root'@'localhost'拒绝访问

进入谷歌搜索并学到了很多有趣的东西。你也可以。

我的其他建议是为您的应用创建单独的用户名和密码,并授予其适当的权限,而不是使用root。 Root很强大,不应该发给应用程序,即使应用程序和数据库都是你的。 Root可以访问每个表,包括系统表。我更喜欢为应用程序创建一个单独的数据库,并仅为应用程序用户名和密码授予完成任务所需的权限(例如,除非需要,否则不使用DELETE权限;不使用表格的DROP等)