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

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

 

Properties配置(C3p0數據源):sql

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>

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

 錯誤緣由:spa

  在系統中也有個username屬性,這時系統變量覆蓋了Properties中的值,這時取得username的值爲系統的用戶名Administrator,密碼爲properties中的password去查詢數據庫,此時用戶名名和密碼並不匹配就會報錯。在Spring完成注入時是用 "${..}"  方式獲取值完成注入的。而經過這種表達式也能直接獲取到JVM系統屬性..........code

 

解決方案:blog

  方案一:將properties文件中的username換成user或其餘就字符串就能夠成功獲取鏈接訪問數據庫。建議:username時敏感詞彙,爲了安全起見仍是儘可能不要使用username。字符串

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

      添加一個system-properties-mode屬性class

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

              NEVER      --- 不覆蓋

              OVERRIDE  --- 覆蓋

相關文章
相關標籤/搜索