記錄在 Red Hat Linux 7.1 上,使用 JDK 1.4 與 MySQL Connector/J 2.0.14 建立 Java 連線的完整環境部署流程,含驅動安裝、環境變數、測試程式、權限授權排錯。
tar -zxpf mysql-connector-java-2.0.14.tar.gz
# 解壓後取得 mysql-connector-java-2.0.14-bin.jar
export CLASSPATH=$CLASSPATH:/path/to/mysql-connector-java-2.0.14-bin.jar
# 建議寫入 ~/.bash_profile 或 /etc/profile 永久生效
import java.sql.*;
public class TestConn {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost/test?user=root&password=");
System.out.println("連線成功: " + conn);
conn.close();
}
}
javac TestConn.java
java TestConn
成功輸出:連線成功: com.mysql.jdbc.Connection@...
cd /path/to/mysql-connector-java-2.0.14/testsuite
java DateTest
正常輸出:
About to insert date 1017684000000
Inserted row 1
Selected date from row 1: 1017684000808
1974-01-01
1974-01-01
錯誤訊息:Server configuration denies access to data source
原因:MySQL 預設只允許 root@localhost,Java 程式若以 root@% 或其他主機連線會被拒。
解決:
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY '';
mysql> FLUSH PRIVILEGES;
關鍵:@'localhost' 必須與 JDBC URL 的 host 完全一致。
| 元件 | 舊版 (文中) | 現代建議 |
|---|---|---|
| JDBC 驅動 | Connector/J 2.0.14 | Connector/J 8.0.x (MySQL 8.0) / 5.1.x (MySQL 5.7) |
| 驅動類別 | com.mysql.jdbc.Driver | com.mysql.cj.jdbc.Driver (8.0+) |
| 連線字串 | jdbc:mysql://localhost/test | jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC |
| JDK | 1.4 | 11 / 17 / 21 (LTS) |
Java 連 MySQL 核心三步驟:驅動 Jar 入 CLASSPATH、載入 Driver 類別、DriverManager.getConnection。權限授權必須精確到 user@host,是新手最常踩的坑。