出于安全考虑,有的时候数据库服务器只能通过SSH访问,比如MySql服务装在了服务器A上,并且A机器只允许B机器才能访问,而部署环境可能在C机器上,这时候就要C服务器通过B服务器连接A服务器,这时候就需要用到SSH方式连接,需要SSH.NET类库:

下载地址:https://github.com/sshnet/SSH.NET

  代码如下:

  

using MySql.Data.MySqlClient;
using Renci.SshNet;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace SSHMySql
{public partial class Form1 : Form{public Form1(){InitializeComponent();SSHConnectMySql();}public void SSHConnectMySql(){string SSHHost = "*.*.*.*";        // SSH地址int SSHPort = 22;              // SSH端口string SSHUser = "user";           // SSH用户名string SSHPassword = "pwd";           // SSH密码string sqlIPA = "127.0.0.1";// 映射地址  实际上也可以写其它的   Linux上的MySql的my.cnf bind-address 可以设成0.0.0.0 或者不设置string sqlHost = "192.168.1.20"; // mysql安装的机器IP 也可以是内网IP 比如:192.168.1.20uint sqlport = 3306;        // 数据库端口及映射端口string sqlConn = "Database=mysql;Data Source=" + sqlIPA + ";Port=" + sqlport + ";User Id=user;Password=pwd;CharSet=utf8";string sqlSELECT = "select * from user";PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo(SSHHost, SSHPort, SSHUser, SSHPassword);connectionInfo.Timeout = TimeSpan.FromSeconds(30);using (var client = new SshClient(connectionInfo)){try{client.Connect();if (!client.IsConnected){MessageBox.Show("SSH connect failed");}var portFwdL = new ForwardedPortLocal(sqlIPA, sqlport, sqlHost, sqlport); //映射到本地端口
                    client.AddForwardedPort(portFwdL);portFwdL.Start();if (!client.IsConnected){MessageBox.Show("port forwarding failed");}MySqlConnection conn = new MySqlConnection(sqlConn);MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();myDataAdapter.SelectCommand = new MySqlCommand(sqlSELECT, conn);try{conn.Open();DataSet ds = new DataSet();myDataAdapter.Fill(ds);dataGridView1.DataSource = ds.Tables[0];}catch (Exception ee){MessageBox.Show(ee.Message);}finally{conn.Close();}client.Disconnect();}catch (Exception ex){MessageBox.Show(ex.Message);}}}}
}

注:如果出现错误可以把本地(开发机器)上的MySql服务停止掉。

需要的dll:SSHDLL.rar

转载于:https://www.cnblogs.com/sunyj/p/6070206.html

C#通过SSH连接MySql相关推荐

  1. ssh如何登录mysql数据库_怎么通过SSH连接Mysql数据库

    出于数据库的安全性,数据库管理员在配置数据库时会为数据库增加一层"保护伞",保护用户在连接数据库时的安全和信息不被泄漏,通常的做法就是配置SSH,也就是为数据库增加一个安全协议,这 ...

  2. idea ssh连接mysql数据库_mysql命令行客户端如何通过ssh服务器连接数据库啊?

    ssh到跳板机然后用 mysql 连接 利用ssh开启一个隧道 我这里的MySQL服务器是192.168.41.83, 我要在192.168.41.72连接 首先在192.168.41.72执行命令开 ...

  3. sqlyog通过跳板机ssh连接mysql数据库

    方法一: 方法二: 在跳板机上启动sh脚本做ssh端口转发,客户端配置连接 10.0.0.1的8306端口即可 jdbc:mysql://10.0.0.1:8306/testdb?useUnicode ...

  4. ssh连接mysql数据库导入_ssh向数据库导入数据库

    aliyun7天实践训练营第四日---使用PolarDB和ECS搭建门户网站 学习过程创建PolarDB数据库账号1.登录管理控制台:2.产品与服务 > 云数据库PolarDB,进入云数据库Po ...

  5. ssh连接mysql命令_ssh 命令行连接mysql数据库

    使用PolarDB和ECS搭建门户网站 一.创建PolarDB数据库账号 ## 1. 单击页面左侧 云产品资源 > 一键复制登录url . 在 阿里云控制台首页 左侧导航栏,依次单击 产品与服务 ...

  6. navicat通过ssh连接mysql

    点击 或选择文件 -> 新建连接 来设置连接属性. 选择 SSH 选项卡并启用 使用 SSH 通道. 填写所需的信息: 主机名或 IP 地址 SSH 服务器的主机. 端口 SSH 服务器的端口, ...

  7. ssh插入mysql乱码_解决SSH连接mysql中文乱码问题

    1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...

  8. ssh mysql 乱码_解决SSH连接mysql中文乱码问题

    1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...

  9. ssh mysql 警告_SSH连接MySQL 出现Table 'xxx' doesn't exist

    SSH连接MySQL 出现Table 'xxx' doesn't exist 在applicationContext.xml中的配置 com.mysql.jdbc.Driver jdbc:mysql: ...

最新文章

  1. contains与compareDocumentPosition方法详解
  2. 2.2 经典网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. JQuery EasyUI combobox(下拉列表框)
  4. 关于计算机的英语作文九年级,实用的九年级英语作文合集6篇
  5. html vue分页,Vue.js bootstrap前端实现分页和排序
  6. 职业生涯中12个最致命的想法
  7. 几个删除重复记录的SQL语句
  8. vue —— UI组件库
  9. ArcEngine二次开发_01(鼠标左击右击地图响应不同事件)
  10. python实现屏幕录制_JavaScript 屏幕录制 API 学习
  11. WinForm皮肤控件(SkinEngine)
  12. 【论文笔记】K-plet Recurrent Neural Networks for Sequential Recommendation
  13. [javaSE] GUI(Action事件)
  14. mp2551总线收发器芯片作用_什么是现场总线,为什么需要隔离处理?
  15. 《金字塔原理》学习笔记 | 第1篇—表达的逻辑
  16. 利用系统函数获取Windows明文密码
  17. 面试前hr加了微信,面试后是否可以向hr询问面试结果?
  18. Android仿网易云项目代码,Android项目实战教程之高仿网易云音乐启动页实例代码...
  19. 1986:【19CSPS提高组】格雷码
  20. 【数据库取证篇】阿里云RDS数据库简介

热门文章

  1. 3.js模式-策略模式
  2. Web API核查表:设计、测试、发布API时需思考的43件事
  3. PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
  4. 如何提高VFP应用软件的路径适应性
  5. POI增加 数据验证 下拉
  6. 安装配置tengine
  7. 好程序员web前端分享MVVM框架Vue实现原理
  8. yum配置中driver-class-name: com.mysql.jdbc.Driver报错
  9. 《企业私有云建设指南》-导读
  10. office漏洞利用--获取shell