執行 Java 程式連接 MySQL 時拋出:Server configuration denies access to data source
MySQL 預設只允許本地主機 (localhost) 連線,遠端主機或特定使用者需明確授權。
mysql -u root -pGRANT ALL PRIVILEGES ON 資料庫名.*
TO '使用者名'@'客戶端主機'
IDENTIFIED BY '密碼';
| 佔位符 | 說明 | 本文範例值 |
|---|---|---|
資料庫名 | 目標資料庫 | test |
使用者名 | MySQL 帳號 | root |
客戶端主機 | Java 程式執行機器 IP/主機名 | localhost (本機) |
密碼 | 該帳號密碼 | '' (空密碼) |
-- 本機 root 空密碼完全授權
GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY '';
-- 遠端應用伺服器 192.168.1.100 使用 app_user 連線
GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'192.168.1.100' IDENTIFIED BY 'StrongPass123';
-- 允許任意主機 (不建議生產環境使用)
GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'%' IDENTIFIED BY 'StrongPass123';
FLUSH PRIVILEGES;
root@'%' 或無密碼帳號。REQUIRE SSL。mysql.user 表,移除無用帳號。jdbc:mysql://192.168.1.50:3306/mydb?user=app_user&password=StrongPass123&useSSL=true&verifyServerCertificate=false