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 数据源的参数,例如连接池大小、最大连接数等。