首先,很抱歉,我的英语不太好。
嗨!我使用 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"/>
有一些事实
- 我可以通过客户端控制台连接 mariadb,并使用 id“root”和密码“mypassword”连接 HeidiSQL。
- mariadb 服务器的默认组合是 'utf8_general_ci'
- mariadb 服务器中有一个名为“pcj01142”的数据库
以下是我尝试解决我的问题但没有奏效的一些尝试
- 重新安装 mariadb 和 apache tomcat9
- 重置 root 用户密码
- 添加拥有所有权限的新用户
- 停止数据库服务器并重新启动
我也尝试过不通过 eclipse 来启动 tomcat 本身,但结果是一样的。
我该如何解决这个问题?
答案1
我自己解决了这个问题。
问题在于 MySQL 和 MariaDB 使用相同的端口号(3306)发生冲突。
当我停止 MySQL 时,问题就解决了。