我自己解决了这个问题。

我自己解决了这个问题。

首先,很抱歉,我的英语不太好。

嗨!我使用 tomcat 连接池和 JNDI 从 Java Web 项目连接 mariaDB 时遇到了一些问题。

这是来自 eclipse 控制台的异常日志。

java.sql.SQLException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:735)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:605)
...(etc)
Caused by: java.sql.SQLInvalidAuthorizationSpecException: Access denied for user 'root'@'localhost' (using password: YES)
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:238)
...(etc)
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
...(etc)

我将连接池信息设置到 Tomcat 服务器 context.xml 文件中,如下所示

<Resource 
        name = "jdbc/maria" 
        auth = "Container"
        type = "javax.sql.DataSource"
        driverClassName = "org.mariadb.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/pcj01142"
        username = "root"
        password = "mypassword"
        maxActive="50" 
        maxWait = "-1"/>

有一些事实

  1. 我可以通过客户端控制台连接 mariadb,并使用 id“root”和密码“mypassword”连接 HeidiSQL。
  2. mariadb 服务器的默认组合是 'utf8_general_ci'
  3. mariadb 服务器中有一个名为“pcj01142”的数据库

以下是我尝试解决我的问题但没有奏效的一些尝试

  • 重新安装 mariadb 和 apache tomcat9
  • 重置 root 用户密码
  • 添加拥有所有权限的新用户
  • 停止数据库服务器并重新启动

我也尝试过不通过 eclipse 来启动 tomcat 本身,但结果是一样的。

我该如何解决这个问题?

答案1

我自己解决了这个问题。

问题在于 MySQL 和 MariaDB 使用相同的端口号(3306)发生冲突。

当我停止 MySQL 时,问题就解决了。

相关内容