用戶截圖模糊無法識別具體異常堆棧,但 Java 連接 MySQL 失敗通常集中在以下幾類錯誤。
ClassNotFoundException: com.mysql.cj.jdbc.Driver
mysql-connector-java 依賴(Maven/Gradle)或 JAR 包放入 classpathcom.mysql.cj.jdbc.Driver,5.x 用 com.mysql.jdbc.Driver// 8.0+ 標準格式(需指定時區)
jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
Access denied for user 'root'@'localhost'
GRANT ALL ON your_db.* TO 'user'@'%' IDENTIFIED BY 'pwd'; FLUSH PRIVILEGES;systemctl status mysqld / services.msctelnet host 3306useSSL=false 或正確配置憑證serverTimezone=Asia/Shanghai 或 UTCimport java.sql.*;
public class JdbcTest {
static final String URL = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=Asia/Shanghai";
static final String USER = "root";
static final String PASS = "123456";
public static void main(String[] args) {
try (Connection conn = DriverManager.getConnection(URL, USER, PASS)) {
System.out.println("連接成功!");
try (Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT VERSION()")) {
if (rs.next()) System.out.println("MySQL 版本: " + rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace(); // 關鍵:打印完整堆棧,包含 SQLState、ErrorCode
}
}
}
e.getSQLState()、e.getErrorCode(),對照 MySQL 錯誤碼文檔。java -Djavax.net.debug=ssl ... 或 URL 加 logger=com.mysql.cj.log.StandardLogger&profileSQL=true。遇到連接報錯,請貼出完整異常堆棧文本而非截圖,按上述清單逐項排查,90% 問題可在 5 分鐘內定位解決。