Access denied for user 'Administrator'@'localhost' (using password: YES)
在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}"/> <propertyname="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)