Java SSH 秘钥连接mysql数据库的方法

下面是详细讲解“Java SSH 秘钥连接mysql数据库的方法”的完整攻略,步骤如下:

1. 生成密钥文件

在本地电脑上生成密钥文件,使用如下命令:

$ ssh-keygen -t rsa -b 2048

然后你会看到生成了两个文件:id_rsaid_rsa.pub,这两个文件一个是私钥,一个是公钥。将公钥文件 id_rsa.pub 发送给服务器管理员,并让他把公钥添加到服务器上的~/.ssh/authorized_keys 文件中。

2. 开启SSH转发

在你的 Java 代码中需要使用 SSH 转发来访问远程 MySQL 服务器。你需要在本地启动 SSH 连接并配置端口转发(-forwarding)功能。假设你的私钥文件为 id_rsa,服务器的 IP 地址为 123.123.123.123,用户名为 root ,则可以使用如下命令:

$ ssh -i /path/to/id_rsa -fN -L 33306:localhost:3306 root@123.123.123.123

在这个命令中,-i 表示使用指定的私钥文件,-fN 表示将 SSH 连接作为守护进程在后台运行,并且不打开远程 shell。 -L 表示端口转发的本地端口 33306将被转发到远程服务器的本地端口 3306

3. 配置 MySQL 数据库连接

在 Java 代码中使用如下配置信息连接远程 MySQL 数据库:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:33306/your_schema?autoReconnect=true&useSSL=false
spring.datasource.username=your_root_user_name
spring.datasource.password=your_root_password

spring.datasource.url 中的 localhost:33306 是转发后的本地端口号,your_schema 是你要连接的数据库名称。

示例

下面给出两个示例说明。

示例 1

一个名为 SSHDatabaseConnection 的类,连接远程的 MySQL 数据库,使用 Spring 框架的 JDBC 与数据库进行交互。代码如下:

import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class SSHDatabaseConnection {
    public static void main(String[] args) {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:33306/your_schema?autoReconnect=true&useSSL=false");
        dataSource.setUsername("your_root_user_name");
        dataSource.setPassword("your_root_password");
        // ... 使用 Spring JDBC 进行相应的数据库操作 ...
    }
}

示例 2

使用 Mybatis 框架连接远程的 MySQL 数据库。代码中使用的是 Spring Boot 框架启动的应用。

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.sql.DataSource;

@Service
public class UserService {
    @Autowired private DataSource dataSource;

    @Autowired private DataSourceTransactionManager dataSourceTransactionManager;

    @Autowired private MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean;

    @Transactional
    public User getUser(long id) {
        SqlSession sqlSession = mybatisSqlSessionFactoryBean.getObject().openSession(true);
        try {
            // 获取 mapper 实例
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            return userMapper.findById(id);
        } finally {
            sqlSession.close();
        }
    }
}

其中的 DataSourceDataSourceTransactionManager 的配置与示例 1 中相同,这里不再赘述。MybatisSqlSessionFactoryBean 是 Mybatis 框架提供的一个工厂 Bean,其配置如下:

import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.io.IOException;

@Component
public class MybatisSqlSessionFactoryBean extends SqlSessionFactoryBean {
    @Autowired private DataSource dataSource;
    @Override
    public void afterPropertiesSet() throws Exception {
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            // 扫描 Mybatis 配置文件
            Resource[] resources = resolver.getResources("classpath:/mybatis/mapper/*.xml");
            setDataSource(dataSource);
            setMapperLocations(resources);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

这里将 Mybatis 的 mapper 配置文件放到 classpath:/mybatis/mapper/ 目录下。Mybatis 的 mapper 配置文件与 Java 定义的 DAO 接口对应,所以还需要一个名为 UserMapper 的接口:

public interface UserMapper {
    User findById(long id);
}

这个接口对应的查询语句需要写在 classpath:/mybatis/mapper/UserMapper.xml 文件中。

到此为止,我们就完成了使用 Java SSH 秘钥连接 MySQL 数据库的方法的攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java SSH 秘钥连接mysql数据库的方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • SQL Server 2005安装过程中出现错误的解决办法

    SQL Server 2005安装过程中出现错误的解决办法 在安装SQL Server 2005的过程中,会遇到各种不同的错误。下面详细讲解一下SQL Server 2005安装过程中可能出现的错误及其解决办法。 1.错误描述:安装SQL Server 2005的时候,提示没有安装.NET Framework 2.0。 错误原因:SQL Server 200…

    database 2023年5月19日
    00
  • Java发展史之Java由来

    Java发展史之Java由来 Java是一种广泛应用于开发Web应用程序、移动应用程序和大型企业级应用程序的面向对象编程语言。Java的诞生可以追溯至上世纪90年代初期。 James Gosling 和 Green Team Java最初是由加拿大的计算机科学家James Gosling及其“绿色团队”在Sun Microsystems(后来被Oracle收…

    database 2023年5月21日
    00
  • Android中数据库常见操作实例分析

    Android中数据库常见操作实例分析 在Android开发中,常常需要使用数据库进行数据的存储和管理。本文将针对Android中的数据库常见操作进行实例分析,包括创建数据库、创建数据表、插入数据、查询数据、删除数据等操作。 创建数据库 创建数据库的过程需要继承SQLiteOpenHelper类,重写onCreate()和onUpgrade()方法。 pub…

    database 2023年5月21日
    00
  • Redis 设计与实现(第十四章) — 服务器

    Redis服务器负责与客户端建立网络连接,之前的数据结构部分已经看过了,本章主要从下面三个方面讲解。 1.服务器执行命令的过程 2.serverCron函数的执行 3.服务器的初始化 服务器执行命令的过程 一个客户端请求命令的基本过程大致如下: 1.客户端发送请求命令给服务器,比如set key value; 2.服务器端接受命令并处理,在数据库中进行设置操…

    Redis 2023年4月12日
    00
  • Linux服务器安装Redis教程

    下面是详细讲解 Linux 服务器安装 Redis 的教程,步骤如下: 1. 下载 Redis 在命令行中输入以下命令下载 Redis: $ wget http://download.redis.io/redis-stable.tar.gz 如果提示找不到 wget,需要先安装 wget 工具,例如在 Ubuntu 系统中可以输入以下命令安装: $ sudo…

    database 2023年5月22日
    00
  • mysql字符集相关总结

    MySQL字符集相关总结 MySQL字符集是指在数据库中使用的字符编码方式,包括每个字符所占的位数、用于存储的字节及其排序规则等方面。正确选择和设置字符集对于保障数据库数据的完整性及避免乱码问题具有非常重要的意义。 MySQL字符集类型 MySQL字符集主要分为以下几种类型: ASCII:一种只有128个字符的字符集,包括数字、字母和一些标点符号等。 Uni…

    database 2023年5月22日
    00
  • 如何使用Python实现数据库中数据的复杂查询?

    以下是使用Python实现数据库中数据的复杂查询的完整攻略。 数据库中数据的复杂查询简介 在数据库中,复杂查询是指从一个或多个表中检索数据的查询,同时还可以使用多个和运算符进行筛选和排序。在Python中,可以使用pymysql库连接到MySQL数据库,并使用SELECT语句实现复杂查询。 步骤1:连接到数据库 在Python中,可以使用pymysql库连接…

    python 2023年5月12日
    00
  • centos 安装redis并加入系统服务

      1.安装redis wget http://download.redis.io/releases/redis-3.2.5.tar.gz 解压:tar -zxvf redis-3.2.5.tar.gz 进入目录:cd redis-3.2.5 编译:make 测试: make test 可能会提示:缺失tcl8.5 安装tcl:yum install tcl…

    Redis 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部