java.sql.sqlexception access denied for user_java.sql.SQLException: Access denied for user root@loc...

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)异常是因为访问数据库密码不正确而抛出的。

解决思路提示:

第一步:查看你的数据库配置文件是否正确,下面就是我的mysql数据库属性配置文件:driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mybatis_test

username=root

password=aaaaaa

主要查看你的url、username和password书写是否有误,其中是否有空格。

注意:确保你的数据库能够正常访问。

第二步:仔细检查你的mybatis-cfg.xml配置文件中数据库配置成功。如下:

其中password、username、url和driver等一定要和数据库属性配置文件中的key保存一致。

第三步:如果两步都没有问题,则你可以进行调试。我的代码如下:// 配置文件

String cfgName = "mybatis/config/mybatis-cfg-file-test.xml";

InputStream input = Resources.getResourceAsStream(cfgName);

SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();

// 根据配置文件获取SqlSessionFactory,因此在build这里打断点(即在这里打断点)

SqlSessionFactory sqlSessionFactory = factoryBuilder.build(input);

SqlSession sqlSession = sqlSessionFactory.openSession(true);

Map params = new HashMap();

String sql = "mybatis.config.StudentForConfigMapper.selectStudentListSimple";

sqlSession.select(sql, params, new ResultHandler() {

@Override

public void handleResult(ResultContext context) {

System.out.println( "Data: " + context.getResultObject() );

}

});

调试主要的类时XMLConfigBuilder.java类:private void parseConfiguration(XNode root) {

try {

//issue #117 read properties first

propertiesElement(root.evalNode("properties"));

typeAliasesElement(root.evalNode("typeAliases"));

pluginElement(root.evalNode("plugins"));

objectFactoryElement(root.evalNode("objectFactory"));

objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));

settingsElement(root.evalNode("settings"));

// 主要调试这个方法,因为这个方法里面可以查看配置文件中

//  数据库信息的替换是否为你所需要的数据库信息

// read it after objectFactory and objectWrapperFactory issue #631

environmentsElement(root.evalNode("environments"));

databaseIdProviderElement(root.evalNode("databaseIdProvider"));

typeHandlerElement(root.evalNode("typeHandlers"));

mapperElement(root.evalNode("mappers"));

} catch (Exception e) {

throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);

}

}

这是个人总结,希望对你有帮助!!!

错误详细信息:log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See https://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:

### Error querying database.  Cause: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

### The error may exist in mybatis/config/StudentForConfigMapper.xml

### The error may involve mybatis.config.StudentForConfigMapper.selectStudentListSimple

### The error occurred while executing a query

### Cause: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)

at org.apache.ibatis.session.defaults.DefaultSqlSession.select(DefaultSqlSession.java:126)

at org.apache.ibatis.session.defaults.DefaultSqlSession.select(DefaultSqlSession.java:114)

at mybatis.config.ClientForConfig.invoke(ClientForConfig.java:34)

at mybatis.config.ClientForConfig.main(ClientForConfig.java:22)

Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)

at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)

at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)

at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)

at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:718)

at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:46)

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:406)

at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)

at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)

at java.sql.DriverManager.getConnection(DriverManager.java:582)

at java.sql.DriverManager.getConnection(DriverManager.java:154)

at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:180)

at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:175)

at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:79)

at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:373)

at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:82)

at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:131)

at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:58)

at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:271)

at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:69)

at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:56)

at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:259)

at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:132)

at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)

at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)

at org.apache.ibatis.session.defaults.DefaultSqlSession.select(DefaultSqlSession.java:124)

... 3 more

点击学习 MyBatis 教程,了解更多的 MyBatis 知识!

错误 "1045 - Access denied for user 'root@192.168.18.80'(using password: YES)" 表示在尝试连接到MySQL数据库时,服务器拒绝了用户账户的访问请求。这通常是由于权限设置不当、用户名密码错误或是IP地址限制等原因造成的。 ### 分析及解决步骤: 1. **检查用户名和密码是否正确**: 确保你在尝试连接数据库时使用的用户名和密码与系统中配置的一致。 2. **审查权限设置**: 检查MySQL服务的权限配置文件(如`my.cnf` 或 `mysql.ini`),确认该账户是否有足够的权限访问数据库。通常,你可以通过运行以下命令来查看特定用户的权限信息: ```sql SHOW GRANTS FOR 'root@192.168.18.80'; ``` 这将显示授予给此用户的所有权限详细信息。 3. **检查IP限制规则**: 如果你的服务器启用了防火墙或安全组策略,确保从特定IP(即这里提到的`192.168.18.80`)可以访问数据库服务。检查防火墙或网络ACL设置,确认允许从该IP访问MySQL端口(通常是3306端口)。 4. **修改防火墙规则**: 若发现防火墙阻止了访问,则需要调整其规则,允许从指定的IP地址访问MySQL服务。 5. **调整MySQL权限**: 使用正确的MySQL客户端工具(例如`mysql`命令行工具或MySQL Workbench等)登录到MySQL数据库服务器,并对问题用户执行以下操作: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root@' identified by 'your_password' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 这会赋予用户全局管理员权限,然后刷新权限表以应用更改。 6. **测试连接**: 修改并验证以上设置之后,再次尝试使用正确的用户名、密码和IP地址连接数据库,看看是否解决了“access denied”的错误。 如果问题仍然存在,建议进一步检查系统的日志文件以及MySQL的日志,获取更详细的错误信息和诊断线索。同时,确保操作系统和软件版本是最新的,因为可能存在已知的安全漏洞或兼容性问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值