druid使用jsch连接mysql

如果你想在 Java 应用中使用 Apache Druid 数据库连接池,并通过 JSch 创建 SSH 隧道连接到 MySQL 数据库,你可以按照以下步骤进行操作。
### 1. 添加依赖 确保在你的 Maven 项目的 pom.xml 中添加 Druid 数据库连接池、JSch 和 MySQL JDBC 驱动的依赖:
xml
 
<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.9</version> <!-- 请检查最新版本 -->
    </dependency>
    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.55</version> <!-- 请检查最新版本 -->
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version> <!-- 请检查最新版本 -->
    </dependency>
</dependencies>
### 2. 使用 Druid 连接池与 JSch 创建 SSH 隧道 以下是一个示例代码,展示如何通过 SSH 隧道连接 MySQL,并使用 Druid 连接池:
java
 
import com.alibaba.druid.pool.DruidDataSource;
import com.jcraft.jsch.*;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class DruidSSHMySQLExample {
    public static void main(String[] args) {
        String sshHost = "your.ssh.server"; // SSH 服务器地址
        String sshUser = "your_ssh_username"; // SSH 用户名
        String sshPassword = "your_ssh_password"; // SSH 密码
        int sshPort = 22; // SSH 端口

        String mysqlHost = "localhost"; // MySQL 服务器地址(在 SSH 隧道中通常是 localhost)
        int mysqlPort = 3306; // MySQL 端口
        String mysqlUser = "your_mysql_username"; // MySQL 用户名
        String mysqlPassword = "your_mysql_password"; // MySQL 密码
        String mysqlDatabase = "your_database"; // 要连接的数据库

        // 创建 Druid 数据源
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3307/" + mysqlDatabase); // 使用本地端口
        dataSource.setUsername(mysqlUser);
        dataSource.setPassword(mysqlPassword);

        try {
            // 创建 SSH 会话
            JSch jsch = new JSch();
            Session session = jsch.getSession(sshUser, sshHost, sshPort);
            session.setPassword(sshPassword);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            // 创建 SSH 隧道
            int localPort = 3307; // 本地端口
            session.setPortForwardingL(localPort, mysqlHost, mysqlPort);

            // 从 Druid 数据源获取连接
            try (Connection connection = dataSource.getConnection()) {
                // 连接成功
            }

            // 关闭 SSH 会话
            session.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭 Druid 数据源
            dataSource.close();
        }
    }
}
### 代码说明
1. **SSH 连接**:使用 JSch 创建 SSH 连接,并设置端口转发。
2. **Druid 数据源**:使用 Druid 创建数据库连接池,并设置连接信息。
3. **获取连接**:从 Druid 数据源获取连接,并执行 SQL 查询。
4. **关闭资源**:确保在完成后关闭数据库连接、SSH 会话和 Druid 数据源。
### 注意事项
- **SSH 隧道**:在创建 SSH 隧道时,确保本地端口(如 3307)未被占用。
- **安全性**:在生产环境中,建议使用更安全的方式管理 SSH 密钥,而不是使用明文密码。
- **Druid 配置**:可以根据需要进一步配置 Druid 数据源的参数,例如连接池大小、最大连接数等。
posted @ 2024-11-13 10:31  穿林打叶  阅读(3)  评论(0编辑  收藏  举报