杰瑞科技汇

Linux下Java如何连接MySQL?

目录

  1. 第一步:环境准备
    • 1 安装 MySQL 服务器
    • 2 安装 Java 开发环境
    • 3 安装 MySQL JDBC 驱动
  2. 第二步:Java 代码实现
    • 1 创建数据库和用户
    • 2 编写 Java 连接代码
    • 3 代码详解
  3. 第三步:编译与运行
    • 1 手动编译与运行
    • 2 使用 Maven/Gradle(推荐)
  4. 第四步:常见问题与解决方案
    • 1 ClassNotFoundException
    • 2 CommunicationsException / Connection refused
    • 3 Access denied (权限问题)
    • 4 No suitable driver found
  5. 第五步:最佳实践与进阶
    • 1 使用连接池
    • 2 使用 try-with-resources 自动关闭资源
    • 3 从配置文件读取信息

第一步:环境准备

在开始编码之前,请确保你的 Linux 系统上已经安装了必要的软件。

Linux下Java如何连接MySQL?-图1
(图片来源网络,侵删)

1 安装 MySQL 服务器

如果你的系统还没有安装 MySQL,可以使用包管理器进行安装。

对于 Debian/Ubuntu 系统:

# 更新软件包列表
sudo apt update
# 安装 MySQL 服务器
sudo apt install mysql-server
# 安全配置向导(建议运行,设置 root 密码等)
sudo mysql_secure_installation

对于 CentOS/RHEL/Fedora 系统:

# 安装 MySQL 服务器
sudo yum install mysql-server
# 启动 MySQL 服务
sudo systemctl start mysqld
# 设置开机自启
sudo systemctl enable mysqld
# 运行安全配置向导
sudo mysql_secure_installation

安装完成后,可以登录 MySQL 检查:

Linux下Java如何连接MySQL?-图2
(图片来源网络,侵删)
mysql -u root -p

2 安装 Java 开发环境

你需要安装 JDK (Java Development Kit) 来编译和运行 Java 代码。

对于 Debian/Ubuntu 系统:

# 安装 OpenJDK 11 (或 17, 8 等你需要的版本)
sudo apt install openjdk-11-jdk

对于 CentOS/RHEL/Fedora 系统:

# 安装 OpenJDK 11
sudo yum install java-11-openjdk-devel

验证 Java 是否安装成功:

Linux下Java如何连接MySQL?-图3
(图片来源网络,侵删)
java -version
javac -version

你应该能看到已安装的 Java 版本信息。

3 安装 MySQL JDBC 驱动

这是 Java 连接 MySQL 的核心组件,它是一个 JAR (Java Archive) 文件,我们推荐使用 MavenGradle 来管理依赖,但这里也展示手动下载的方式。

推荐方式:使用 Maven (见第三步)

手动下载方式:

  1. 访问 MySQL 官方驱动下载页面:MySQL Connector/J
  2. 选择 "Platform Independent" (平台独立) 版本,下载 ZIP 压缩包。
  3. 解压压缩包,你会找到一个名为 mysql-connector-j-x.x.x.jar (或类似名字) 的文件。
  4. 将这个 JAR 文件放在一个方便的位置,/home/your_user/libs/

第二步:Java 代码实现

现在我们来编写 Java 代码来连接 MySQL。

1 创建数据库和用户

在 MySQL 中创建一个用于测试的数据库和一个专门的用户。

-- 登录 MySQL
mysql -u root -p
-- 创建一个名为 'java_test_db' 的数据库
CREATE DATABASE java_test_db;
-- 创建一个新用户 'java_user',密码为 'your_password',并授予其对 'java_test_db' 的所有权限
CREATE USER 'java_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON java_test_db.* TO 'java_user'@'localhost';
-- 刷新权限使更改生效
FLUSH PRIVILEGES;
-- 退出 MySQL
exit;

2 编写 Java 连接代码

创建一个名为 JdbcExample.java 的文件。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcExample {
    // 数据库连接信息
    // 注意:MySQL 8.0+,请使用 com.mysql.cj.jdbc.Driver
    private static final String DB_URL = "jdbc:mysql://localhost:3306/java_test_db?useSSL=false&serverTimezone=UTC";
    private static final String USER = "java_user";
    private static final String PASS = "your_password";
    public static void main(String[] args) {
        // 使用 try-with-resources 语句,确保连接、语句和结果集在使用后被自动关闭
        try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT 'Hello, MySQL from Java!' as message")) {
            // 检查连接是否成功
            if (conn != null) {
                System.out.println("连接数据库成功!");
            }
            // 处理结果集
            while (rs.next()) {
                // 通过列名获取数据
                String message = rs.getString("message");
                System.out.println("数据库返回消息: " + message);
            }
        } catch (SQLException e) {
            System.err.println("数据库连接或查询失败!");
            e.printStackTrace();
        }
    }
}

3 代码详解

  • DB_URL: 数据库的连接字符串。
    • jdbc:mysql://: 协议和子协议。
    • localhost:3306: 数据库服务器的地址和端口。
    • /java_test_db: 要连接的数据库。
    • ?useSSL=false: 在开发环境中禁用 SSL(生产环境应启用)。
    • &serverTimezone=UTC: 指定服务器时区,避免警告。
  • USERPASS: 你在 2.1 步骤中创建的用户名和密码。
  • DriverManager.getConnection(): 核心方法,用于建立与数据库的连接。
  • try-with-resources: 这是 Java 7+ 的一个特性,可以自动实现 AutoCloseable 接口的对象(如 Connection, Statement, ResultSet)在代码块执行完毕后自动关闭,无需手动调用 close(),能有效防止资源泄漏。
  • Statement: 用于执行静态 SQL 语句。
  • executeQuery(): 执行查询语句,返回一个 ResultSet 对象,包含了查询结果。
  • ResultSet: 表示查询结果集,你可以通过 next() 方法遍历每一行,并用 getXXX() 方法获取列的值。
  • SQLException: 所有与数据库相关的操作都可能抛出此异常,需要捕获处理。

第三步:编译与运行

你有两种主要的方式来编译和运行这段代码。

1 手动编译与运行

  1. 编译: 你需要告诉 javac 编译器去哪里找 JDBC 驱动 JAR 文件,使用 -cp (classpath) 选项。

    假设你的 mysql-connector-j-x.x.x.jar 文件在 /home/your_user/libs/ 目录下。

    # -cp 指定了 JAR 文件的路径,. 表示当前目录
    javac -cp "/home/your_user/libs/mysql-connector-j-x.x.x.jar:." JdbcExample.java

    注意:在 Linux 和 macOS 上,classpath 分隔符是冒号 ,而在 Windows 上是分号 。

  2. 运行: 运行时同样需要提供 classpath。

    # java 命令也需要 -cp 来指定运行时依赖
    java -cp "/home/your_user/libs/mysql-connector-j-x.x.x.jar:." JdbcExample

    如果一切顺利,你应该会看到输出:

    连接数据库成功!
    数据库返回消息: Hello, MySQL from Java!

2 使用 Maven/Gradle(强烈推荐)

使用构建工具可以极大地简化依赖管理和编译运行过程。

使用 Maven:

  1. 创建项目结构:

    my-java-app/
    ├── pom.xml
    └── src/
        └── main/
            └── java/
                └── JdbcExample.java
  2. **编写 `

分享:
扫描分享到社交APP
上一篇
下一篇