C#通过SSH连接MySql
出于安全考虑,有的时候数据库服务器只能通过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相关推荐
- ssh如何登录mysql数据库_怎么通过SSH连接Mysql数据库
出于数据库的安全性,数据库管理员在配置数据库时会为数据库增加一层"保护伞",保护用户在连接数据库时的安全和信息不被泄漏,通常的做法就是配置SSH,也就是为数据库增加一个安全协议,这 ...
- idea ssh连接mysql数据库_mysql命令行客户端如何通过ssh服务器连接数据库啊?
ssh到跳板机然后用 mysql 连接 利用ssh开启一个隧道 我这里的MySQL服务器是192.168.41.83, 我要在192.168.41.72连接 首先在192.168.41.72执行命令开 ...
- sqlyog通过跳板机ssh连接mysql数据库
方法一: 方法二: 在跳板机上启动sh脚本做ssh端口转发,客户端配置连接 10.0.0.1的8306端口即可 jdbc:mysql://10.0.0.1:8306/testdb?useUnicode ...
- ssh连接mysql数据库导入_ssh向数据库导入数据库
aliyun7天实践训练营第四日---使用PolarDB和ECS搭建门户网站 学习过程创建PolarDB数据库账号1.登录管理控制台:2.产品与服务 > 云数据库PolarDB,进入云数据库Po ...
- ssh连接mysql命令_ssh 命令行连接mysql数据库
使用PolarDB和ECS搭建门户网站 一.创建PolarDB数据库账号 ## 1. 单击页面左侧 云产品资源 > 一键复制登录url . 在 阿里云控制台首页 左侧导航栏,依次单击 产品与服务 ...
- navicat通过ssh连接mysql
点击 或选择文件 -> 新建连接 来设置连接属性. 选择 SSH 选项卡并启用 使用 SSH 通道. 填写所需的信息: 主机名或 IP 地址 SSH 服务器的主机. 端口 SSH 服务器的端口, ...
- ssh插入mysql乱码_解决SSH连接mysql中文乱码问题
1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...
- ssh mysql 乱码_解决SSH连接mysql中文乱码问题
1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...
- ssh mysql 警告_SSH连接MySQL 出现Table 'xxx' doesn't exist
SSH连接MySQL 出现Table 'xxx' doesn't exist 在applicationContext.xml中的配置 com.mysql.jdbc.Driver jdbc:mysql: ...
最新文章
- contains与compareDocumentPosition方法详解
- 2.2 经典网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- JQuery EasyUI combobox(下拉列表框)
- 关于计算机的英语作文九年级,实用的九年级英语作文合集6篇
- html vue分页,Vue.js bootstrap前端实现分页和排序
- 职业生涯中12个最致命的想法
- 几个删除重复记录的SQL语句
- vue —— UI组件库
- ArcEngine二次开发_01(鼠标左击右击地图响应不同事件)
- python实现屏幕录制_JavaScript 屏幕录制 API 学习
- WinForm皮肤控件(SkinEngine)
- 【论文笔记】K-plet Recurrent Neural Networks for Sequential Recommendation
- [javaSE] GUI(Action事件)
- mp2551总线收发器芯片作用_什么是现场总线,为什么需要隔离处理?
- 《金字塔原理》学习笔记 | 第1篇—表达的逻辑
- 利用系统函数获取Windows明文密码
- 面试前hr加了微信,面试后是否可以向hr询问面试结果?
- Android仿网易云项目代码,Android项目实战教程之高仿网易云音乐启动页实例代码...
- 1986:【19CSPS提高组】格雷码
- 【数据库取证篇】阿里云RDS数据库简介