Druid 数据源 连接MySql 失败 using password:YES?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Druid 数据源 连接MySql 失败 using password:YES?报错

爱吃鱼的程序员 2020-06-08 10:15:04 199

报错:

Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4208)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4140)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1747)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1287)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2494)
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2332)

applicationContext-dao.xml:

<!--加载配置文件-->
<context:property-placeholder location="classpath:properties/db.properties" />

<!--数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      destroy-method="close">
    <property name="url" value="${jdbc.url}" />
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="name" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="maxActive" value="10" />
    <property name="minIdle" value="5" />
</bean>

db.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/taotao?useUnicode=true&autoReconnect=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=rootadmin
druid 关系型数据库 MySQL Java 数据库连接 数据库
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-08 10:15:22

    直接在命令行下用mysql-hlocalhost-uroot-p然后输入密码试试看啊

    可是能登录成功,肯定没有配置错误该用户没有配置localhost的访问权限设置下就行了这样设置还是不行,我可以确定application-Context-dao.xml是读到db.properties的grantallprivilegesontaotao.*toroot @localhostidentifiedby"rootadmin";我这样设置的对不对安?

    解决了,虽然不知道什么原因.

    mavenclean一下,再重新部署到tomcat上,就OK了

    <propertyname="name"value="${jdbc.username}"/>这行写错了,name换成username
    哇我都不知道怎么错的谢大佬

    引用来自“o南柯太守o”的评论

    <propertyname="name"value="${jdbc.username}"/>这行写错了,name换成username

    在Spring完成注入时是用"${..}" 方式获取值完成注入的。而通过这种表达式也能直接获取到JVM系统属性。

    因为在系统中也有个username属性,这时系统变量覆盖了Properties中的值,这时取得username的值为系统的用户名Administrator(主机名),密码为properties中的password去查询数据库,此时用户名名和密码并不匹配就会报错。
    改正方法就是将db.properties中的username,加个前缀

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程