开发者社区> 问答> 正文

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

报错:

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

展开
收起
爱吃鱼的程序员 2020-06-08 10:15:04 809 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    直接在命令行下用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,加个前缀

    2020-06-08 10:15:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像