1. 程式人生 > >Access denied for user 'Administrator'@'localhost' (using password: YES)

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

pro 方式 chan bsp user mini hold 文件中 rri

在Spring容器中通過配置 <context:property-placeholder location="classpath:/jdbc.properties"/> 調用properties數據源配置文件時出現 Access denied for user [email protected] (using password: YES) 錯誤!!!!

Properties配置(C3p0數據源):

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

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

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

<bean id="datasouce" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass"  value="${dirver}"/>
    <property name="jdbcUrl" value="${jdbcUrl}"/>
    <property 
name="user" value="${username}"/> <property name="password" value="${password}"/> </bean>

---- 在獲取數據源中的連接時出現上述的錯誤。

解決方案:

  方案一:將properties文件中的username換成user或其他就字符串就可以成功獲取連接訪問數據庫。

  方案二:在Spring配置文件中修改成:<context:property-placeholder location="classpath:/jdbc.properties" system-properties-mode="FALLBACK / NEVER"/>

      添加一個system-properties-mode屬性

      該屬性有三個值:FALLBACK  --- 默認值,不存在時覆蓋

              NEVER    --- 不覆蓋

              OVERRIDE  --- 覆蓋

到現在我還未明白導致這個錯誤的具體原因。經過百度解釋說是環境變量覆蓋了Properties中的值,在Spring完成註入時是用 "${..}" 方式獲取值完成註入的。而通過這種表達式也能直接獲取到JVM系統屬性..........

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