天天看點

Java常見問題之Access denied for user 'root'@'localhost'

本文介紹了出現

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

問題的解決方式

一.bug提示如下

[Druid-ConnectionPool-Create-] [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:)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:)
           

二.分析

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

指通過賬号名:

root

,以及

root

的密碼無法通路

本地

的資料庫,那問題鎖定在連接配接資料庫的賬号和密碼上,與

datasource

的配置有關.

三.解決

因為我使用的是yml檔案配置

datasource

,找到yml檔案,并打開如下代碼:

spring:
  datasource:
    url: jdbc:mysql://localhost:/ndc?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
           

将以上代碼中

username

password

改為正确的賬号密碼即可.

四.思考

出現上述問題,主要是因為部署項目到

遠端伺服器

時需要切換

連接配接的資料庫路徑

以及更換

賬号

密碼

,因連接配接的伺服器資料庫資訊與本地資料庫資訊不一緻造成,為了防止頻繁變更資料庫的賬号和密碼,可以将賬号和密碼設定為相同的.

簡書

Java常見問題之Access denied for user ‘root’@’localhost’