本文介紹了出現(xiàn)Access denied for user 'root'@'localhost' (using password: YES)問題的解決方式
一.bug提示如下
[Druid-ConnectionPool-Create-879333993] [com.alibaba.druid.pool.DruidDataSource]-[ERROR] create connection error
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2194)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2225)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
二.分析
Access denied for user 'root'@'localhost' (using password: YES)指通過賬號(hào)名:root,以及root的密碼無法訪問本地的數(shù)據(jù)庫(kù),那問題鎖定在連接數(shù)據(jù)庫(kù)的賬號(hào)和密碼上,與datasource的配置有關(guān).
三.解決
因?yàn)槲沂褂玫氖莥ml文件配置datasource,找到y(tǒng)ml文件,并打開如下代碼:
spring:
datasource:
url: jdbc:mysql://localhost:3306/ndc?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
將以上代碼中username與password改為正確的賬號(hào)密碼即可.
四.思考
出現(xiàn)上述問題,主要是因?yàn)椴渴痦?xiàng)目到遠(yuǎn)程服務(wù)器時(shí)需要切換連接的數(shù)據(jù)庫(kù)路徑以及更換賬號(hào)與密碼,因連接的服務(wù)器數(shù)據(jù)庫(kù)信息與本地?cái)?shù)據(jù)庫(kù)信息不一致造成,為了防止頻繁變更數(shù)據(jù)庫(kù)的賬號(hào)和密碼,可以將賬號(hào)和密碼設(shè)置為相同的.