【问题标题】:mysql and javax.naming.NamingExceptionmysql 和 javax.naming.NamingException
【发布时间】:2012-07-13 09:32:40
【问题描述】:

我使用的是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用户。

我得到了同样的例外。

【问题讨论】:

标签: java mysql eclipse tomcat connection-pooling


【解决方案1】:

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

我贴了这个

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

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

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

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2019-10-23
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多