mysql jdbc ssh 代理_Jdbc使用SSH连接mysql

pom.xml

mysql

mysql-connector-java

5.1.44

com.jcraft

jsch

0.1.54

config.properties

#host

host_ip=192.168.159.112

host_name=root

host_password=****

#mysql

ip=127.0.0.1

db=test

name=root

password=****

代码

package com.myproject.demo;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.Session;

import java.io.IOException;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

/**

* Hello world!

*

*/

public class App {

private static Session session;

public static void main( String[] args ) throws IOException {

InputStream resourceAsStream = ClassLoader.getSystemClassLoader()

.getResourceAsStream("config.properties");

Properties properties = new Properties();

properties.load(resourceAsStream);

String ip = properties.getProperty("ip");

String db = properties.getProperty("db");

String name = properties.getProperty("name");

String password = properties.getProperty("password");

String host_ip = properties.getProperty("host_ip");

String host_name = properties.getProperty("host_name");

String host_password = properties.getProperty("host_password");

int localPort = 0;

try {

localPort = openSSH(host_ip,host_name,host_password);

} catch (Exception e) {

e.printStackTrace();

}

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

Connection connection = null;

try {

connection = DriverManager.getConnection("jdbc:mysql://"+ip+":"+localPort+"/"+db+"?characterEncoding=utf8&useSSL=false",name,password);

} catch (SQLException e) {

e.printStackTrace();

}

String sql = "select version()";

Statement statement = null;

try {

statement = connection.createStatement();

ResultSet rs = statement.executeQuery(sql);

while (rs.next()){

String version = rs.getString("version()");

System.out.println("mysql version: "+version);

}

} catch (SQLException e) {

e.printStackTrace();

}

closeSSH();

}

public static int openSSH(String host,String username,String password) throws Exception{

JSch jSch =new JSch();

session = jSch.getSession(username,host,22);

session.setPassword(password);

session.setConfig("StrictHostKeyChecking", "no");

session.connect();

System.out.println(session.getServerVersion());

int assinged_port = session.setPortForwardingL(3307,host,3306);

System.out.println("localhost:"+assinged_port);

return assinged_port;

}

public static void closeSSH(){

session.disconnect();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以在 application.yml 文件中使用以下配置来设置 MySQLSSH 通道: ``` spring: datasource: url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE} username: ${MYSQL_USER} password: ${MYSQL_PASSWORD} jdbcUrl: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useSSL=false ssh: host: ${SSH_HOST} port: ${SSH_PORT} user: ${SSH_USER} password: ${SSH_PASSWORD} privateKey: ${SSH_PRIVATE_KEY} passphrase: ${SSH_PASSPHRASE} ``` 这里的 ${MYSQL_HOST}、${MYSQL_PORT}、${MYSQL_DATABASE}、${MYSQL_USER} 和 ${MYSQL_PASSWORD} 分别对应 MySQL 服务器的主机名、端口、数据库名、用户名和密码。 ${SSH_HOST}、${SSH_PORT}、${SSH_USER}、${SSH_PASSWORD}、${SSH_PRIVATE_KEY} 和 ${SSH_PASSPHRASE} 分别对应 SSH 代理服务器的主机名、端口、用户名、密码、私钥文件路径和私钥的密码(如果有的话)。 请注意,在使用上述配置之前,你需要确保你已经安装并配置了 MySQLSSH 代理服务器,并且你的应用程序能够访问这些服务器。 ### 回答2: 在application.yml中配置MySQLSSH通道需要以下几步: 1. 将SSH证书保存到本地。首先,需要通过SSH连接MySQL服务器。为此,我们需要一个SSH证书,这个证书文件通常以.pem或.ppk结尾。将该证书保存在本地。 2. 在application.yml中配置SSH连接参数。在yml文件中,需要设置SSH连接的主机、端口、用户名、密码和证书路径。以下是一个示例配置: ```yml spring: datasource: url: jdbc:mysql://localhost:3306/database_name?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC # MySQL连接地址,使用SSH通道,需要指定SSH的本地端口号 username: your_username # MySQL数据库用户名 password: your_password # MySQL数据库密码 ssh: enabled: true # 启用SSH通道 host: ssh_host # SSH服务器地址 port: 22 # SSH服务器端口号 username: ssh_username # SSH用户名 password: ssh_password # SSH密码 key-file: path/to/ssh_key.pem # SSH证书的本地路径 ``` 请将其中的`database_name`,`your_username`,`your_password`,`ssh_host`,`ssh_username`,`ssh_password`和`path/to/ssh_key.pem`替换为正确的值。 3. 添加MySQL连接驱动依赖。在项目的pom.xml文件中,确保已添加正确的MySQL连接驱动依赖。以下是一个示例配置: ```xml <dependencies> <!-- 其他依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies> ``` 请将`<version>8.0.23</version>`替换为您使用MySQL连接驱动的版本号。 通过以上步骤,您可以在application.yml中成功配置MySQLSSH通道。记得替换相应的参数值,并按需修改其他数据库相关的配置。 ### 回答3: 在application.yml配置文件中配置MySQLSSH通道,可以通过如下步骤进行配置: 1. 首先,在application.yml中添加MySQL数据库相关的配置信息,包括数据库的host、port、username、password等信息。 例如: ``` spring: datasource: url: jdbc:mysql://localhost:3306/mydatabase username: root password: mypassword driver-class-name: com.mysql.jdbc.Driver ``` 2. 然后,在application.yml中添加SSH通道的配置信息,包括SSH的host、port、username、password等信息。 例如: ``` ssh: host: ssh.example.com port: 22 username: root password: sshpassword ``` 3. 接下来,配置SSH隧道的本地转发规则。通过配置本地端口和目标数据库地址(即MySQL的host和port),将本地请求转发到远程服务器。 例如: ``` ssh: local-port-forwarding: - local-port: 3307 remote-host: localhost remote-port: 3306 ``` 这表示将本地的3307端口转发到远程服务器的localhost:3306上。 4. 最后,通过配置Spring Boot的数据源,将SSH通道应用到数据库连接上。 例如: ``` spring: datasource: url: jdbc:mysql://localhost:3307/mydatabase username: root password: mypassword driver-class-name: com.mysql.jdbc.Driver ``` 配置完成后,应用程序将通过SSH通道连接到远程MySQL数据库。这样,应用程序就可以访问和操作远程MySQL数据库了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值