0

我正在使用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没有密码)。一切正常。然后我添加了密码并正确更改了 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用户。

我得到了同样的例外。

4

1 回答 1

1

我建议您在遇到问题时在错误消息中剪切并粘贴通用内容。在最坏的情况下,当你得知自己并不孤单或第一个时,你会感到欣慰;充其量您会看到解决问题的简单方法。

我贴了这个

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

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

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

于 2012-07-13T09:43:37.223 回答