Access denied for user 'Administrator'@'localhost' (using password: YES)

一、问题描述

在 Spring 容器中通过配置 xml 加载和读取 properties 配置文件的方式时,遇到错误!

<context:property-placeholder location="classpath:/jdbc.properties"/> 

调用 properties 数据源配置文件时出现这样的错误:

Access denied for user ‘Administrator’@‘localhost’ (using password: YES) 错误!!!!

截图:

二、问题原因:

properties 中不能用 username 作为变量,这种方式会注入自己的系统环境变量的 用户名,本来是 root ,不应是那个 windows 用户名

真让人脑壳疼

错误的 Properties 配置(使用 username 作为变量名):

dirver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/mydb1
username=root
password=admin

Spring基本配置(完成注入):

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

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
</bean>

三、解决方案:

方案一:

将 properties 文件中的 username 换成 user 或其他就字符串就可以成功获取连接访问数据库。建议:username 时敏感词汇,为了安全起见还是尽量不要使用username。

正确的 Properties 配置:

dirver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/mydb1
user=root
password=admin

Spring基本配置(完成注入):

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

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${user}"/>
        <property name="password" value="${password}"/>
</bean>

方案二:

在Spring配置文件中修改成:

<context:property-placeholder location="classpath*:/jdbc.properties" system-properties-mode="FALLBACK/NEVER"/>   

添加一个 system-properties-mode 属性

该属性有三个值:

  • FALLBACK  — 默认值,不存在时覆盖

  • NEVER    — 不覆盖

  • OVERRIDE  — 覆盖

更多爬坑记录

支持博主

我正在参加 CSDN 2018 年博客之星评选,希望大家能支持我,
我是【No. 001】号 肖朋伟 ,感谢大家宝贵的一票 ^_^/
投票地址:https://bss.csdn.net/m/topic/blog_star2018/index

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖朋伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值