SSH连接MySQL数据库是一种安全的方式来远程管理和操作MySQL数据库。下面是使用不同编程语言实现SSH连接MySQL数据库的代码示例:
import paramiko
import pymysql
# SSH连接配置
ssh_host = "ssh.example.com"
ssh_port = 22
ssh_username = "your_username"
ssh_password = "your_password"
# MySQL数据库配置
mysql_host = "localhost"
mysql_port = 3306
mysql_username = "mysql_username"
mysql_password = "mysql_password"
mysql_database = "your_database"
# SSH连接
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(ssh_host, port=ssh_port, username=ssh_username, password=ssh_password)
# 创建SSH隧道
ssh_tunnel = ssh_client.get_transport().open_channel("direct-tcpip", (mysql_host, mysql_port), ("127.0.0.1", 0))
# 连接MySQL数据库
mysql_connection = pymysql.connect(host='127.0.0.1', port=ssh_tunnel.getpeername()[1], user=mysql_username,
passwd=mysql_password, db=mysql_database, charset='utf8', cursorclass=pymysql.cursors.DictCursor)
# 执行SQL查询
try:
with mysql_connection.cursor() as cursor:
sql = "SELECT * FROM your_table"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
finally:
mysql_connection.close()
ssh_client.close()
该代码使用paramiko库进行SSH连接和隧道创建,使用pymysql库连接和操作MySQL数据库。
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SSHConnectMySQL {
public static void main(String[] args) {
// SSH连接配置
String sshHost = "ssh.example.com";
int sshPort = 22;
String sshUsername = "your_username";
String sshPassword = "your_password";
// MySQL数据库配置
String mysqlHost = "localhost";
int mysqlPort = 3306;
String mysqlUsername = "mysql_username";
String mysqlPassword = "mysql_password";
String mysqlDatabase = "your_database";
try {
// SSH连接
JSch jsch = new JSch();
Session session = jsch.getSession(sshUsername, sshHost, sshPort);
session.setPassword(sshPassword);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
// 创建SSH隧道
int assignedPort = session.setPortForwardingL(0, mysqlHost, mysqlPort);
// 连接MySQL数据库
String mysqlUrl = "jdbc:mysql://localhost:" + assignedPort + "/" + mysqlDatabase;
Connection connection = DriverManager.getConnection(mysqlUrl, mysqlUsername, mysqlPassword);
// 执行SQL查询
Statement statement = connection.createStatement();
String sql = "SELECT * FROM your_table";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
// 处理查询结果
// ...
}
// 关闭连接
resultSet.close();
statement.close();
connection.close();
session.disconnect();
} catch (JSchException | SQLException e) {
e.printStackTrace();
}
}
}
该代码使用JSch库进行SSH连接和隧道创建,使用JDBC连接和操作MySQL数据库。
以上示例代码可以根据实际情况进行配置和修改。请确保已经安装所需的依赖库和组件,并替换代码中的配置信息为实际的值。另外,为了保证安全性,建议将敏感信息存储在配置文件中,并在代码中读取配置。
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
企业创新在线学堂
企业创新在线学堂
云+社区技术沙龙[第20期]
云+社区技术沙龙[第17期]
企业创新在线学堂
云+社区沙龙online[数据工匠]
云+社区沙龙online [国产数据库]
腾讯云数据库TDSQL训练营
领取专属 10元无门槛券
手把手带您无忧上云