我试图使用HikariCP作为连接池,但是尽管使用了与DBCP相同的设置(我已经验证过),但是访问被拒绝了,这些设置与我使用的直接JDBC连接相同。我搞不懂为什么会被拒绝。
例外情况:
Caused by: java.sql.SQLException: Access denied for user 'TestUser'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1206)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2239)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:422)
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:134)
at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:444)
at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:548)
... 13 more
我的JDBC是:jdbc:mysql://localhost:3307/Test
,它是100%正确的(包括端口)。
我所做的唯一的事情是:
//Start our configuration
HikariConfig config = new HikariConfig();
//Set the connection settings
config.setJdbcUrl( "jdbc:mysql://localhost:3307/Test" );
config.setUsername( "TestUser" );
config.setPassword( "test" );
//Data source class
config.setDataSourceClassName( "com.mysql.jdbc.jdbc2.optional.MysqlDataSource" );
//Set our settings
config.addDataSourceProperty( "cachePrepStmts", "true") );
config.addDataSourceProperty( "prepStmtCacheSize", "250" );
config.addDataSourceProperty( "prepStmtCacheSqlLimit", "2048" );
//Create the datasource
dataSource = new HikariDataSource(config);
我正在使用Java 6。
发布于 2016-05-04 17:00:34
在这里找到答案:https://github.com/brettwooldridge/HikariCP/issues/386#issuecomment-132256375
我要注意的是,您应该使用dataSourceClasName和“dataSource”。属性(用于服务器、端口等)、或根本不使用dataSourceClassName,只需使用jdbcUrl (但继续使用“dataSource”)。财产)。
发布于 2017-08-08 19:13:51
从数据源中删除密码字段,由于MySql而面临的问题没有在其库中存储任何密码,而是从您试图与密码建立连接的代码中存储任何密码。
https://stackoverflow.com/questions/37033838
复制相似问题