奇怪的問題:JEECG-BOOT專案啟動報資料庫連線失敗
阿新 • • 發佈:2022-05-10
MySQL版本:Server version: 8.0.28 MySQL Community Server
JEECG-BOOT版本:3.1.0
問題描述:
jeecg-boot連線本地資料庫報錯。
異常資訊詳情:
2022-05-10 09:32:08.329 [Druid-ConnectionPool-Create-650835126] ERROR com.alibaba.druid.pool.DruidDataSource:2781 - create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
問題排查步驟:
第一步、給root使用者開通遠端訪問許可權
-- 登入資料庫後切換至mysql資料庫
use mysql;
-- 給root使用者開通遠端訪問許可權
update user set host = '%' where user = 'root';
-- 重新載入許可權資料
flush privileges
給root使用者開通遠端訪問許可權後,再次啟動程度,問題還存在,沒有解決!
第二步、確認配置檔案中的資料庫連線密碼是否正確
配置的資料庫連線密碼正確,可以在其它電腦上使用DataGrip成功連線資料庫。
第三步、那到底是哪裡出了問題呢?
到底是哪裡出了問題呢?不知道,一臉懵B。嘗試將資料庫連線密碼修改為abc123
-- 登入資料庫後切換至mysql資料庫
use mysql;
-- 修改root使用者密碼
alter user 'root'@'%' identified by 'abc123';
-- 重新載入許可權資料
flush privileges
再次啟動程式,居然成功了。
最後問題雖然解決了,但是沒有弄明白問題出在哪了。原來的密碼由大寫字母、小寫字母、@符號、數字4部分組成,用這種格式的密碼,執行程式就報資料庫連線錯誤,改成abc123
這種簡單的密碼,就能夠成功連線。So,是druid動態資料庫連線配置資訊不支援密碼中含有特殊字元?不應該吧,Druid這麼強,阿里出品。
後記
MySQL8修改root密,在MySQL 8.04前,執行:SET PASSWORD=PASSWORD(‘[新密碼]’);
-- 修改root使用者密碼
alter user 'root'@'%' identified by 'abc123';
-- 重新載入許可權資料
flush privileges
參考連結