Spring容器使用中出現 Access denied for user 'Administrator'@'localhost' (using password: YES)


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) 錯誤!!!!

Properties配置:

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

 

錯誤原因:

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

解決方案:

  方案一:將properties文件中的username換成user或其他就字符串就可以成功獲取連接訪問數據庫。建議:username時敏感詞匯,為了安全起見還是盡量不要使用username。

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

      添加一個system-properties-mode屬性

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

              NEVER      --- 不覆蓋

              OVERRIDE  --- 覆蓋

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM