Вопрос по .net, c#, mysql, database – Как подключиться к MySQL из C # через SSH

7

Как я могу подключиться к базе данных MySQL через C #,

Это моя строка подключения сейчас:

connectionString="server=localhost;port=3306;user id=root;Password=*****;database=Data" providerName="MySql.Data.MySqlClient"

Как поместить строку SSH в эту форму, как это должно быть что-то вроде:

Имя хоста SSH, Имя пользователя SSH, Пароль SSH, Имя хоста Mysql, Имя пользователя Mysql, Пароль Mysql, Порт

Посмотри наplink программа, которая входит в состав Putty. Возможно, не самый элегантный, но это должно работать.-Lараметр @ (forward local port) будет здесь интересен. Учетные данные могут быть предоставлены несколькими способами. Я рекомендую использовать PKI. user166390
Вау, довольно сложно понять, как работает эта замазка user123_456
@ pst да ты был первым user123_456
Я хотел бы создать SSH-прокси / forwardпервы а потом просто используй это ... user166390
уверен, дай мне больше информации, как это делается user123_456

Ваш Ответ

4   ответа
7

что MySql и MySqlClient поддерживают такие вещи. Строка подключения специально для базы данных. Вам понадобится SSH-клиент, чтобы сначала подключиться к SSH-серверу, а затем найти способ маршрутизировать Sql-соединение через этот туннель.

http: //www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh

, что есть библиотека Microsoft .Net для обработки SSH-соединений, но есть проект с открытым исходным кодом на Code Plex, который мог бы помочь.

http: //sshnet.codeplex.com

+ 1 я не знал о существовании sshnet. Хорошо знать aleroot
хорошая библиотека, попробую посмотреть, как она работает user123_456
3
PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo(hostAdres, hostNaam, wachtwoord); 
connectionInfo.Timeout = TimeSpan.FromSeconds(30); 
client = new SshClient( connectionInfo); 
client.Connect(); 
ForwardedPortLocal portFwld = new ForwardedPortLocal ("127.0.0.1", Convert.ToUInt32(hostpoort), DataBaseServer, Convert.ToUInt32(remotepoort)); client.AddForwardedPort(portFwld); 
portFwld.Start(); 
// using Renci.sshNet 
connection = new MySqlConnection("server = " + "127.0.0.1" + "; Database = database; password = PWD; UID = yourname; Port = 22"); 
connection.Open();
2

чения, сначала необходимо установить подключение SSH, а затем использовать стандартную строку подключения, аналогичную той, которая указана в вашем вопросе.

Чтобы установить SSH-соединение через C #, вы можете использовать библиотеку типа SharpSsh .

У вас есть пример того, как может быть установлено SSH-соединение [сначала]? user166390
Спасибо за ответ, но проблема заключается в установлении такого рода связи. Как сказал pst, мне нужно использовать шпаклевку. Но это немного сложно user123_456
Вы можете использовать, например, sharpSsh aleroot
0

это окончательный код

    PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo("host", "user", "password");
    connectionInfo.Timeout = TimeSpan.FromSeconds(30);
    var client = new SshClient(connectionInfo);
    client.Connect();
    var x = client.IsConnected;
    ForwardedPortLocal portFwld = new ForwardedPortLocal("127.0.0.1"/*your computer ip*/, "127.0.0.1" /*server ip*/, 3306 /*server mysql port*/);
    client.AddForwardedPort(portFwld);
    portFwld.Start();
    //// using Renci.sshNet 
    var connection = new MySqlConnection("server = " + "127.0.0.1" /*you computer ip*/ + "; Database = DataBaseName; UID = ?; PWD =?; Port = " + portFwld.BoundPort /*very important !!*/);
    connection.Open();
    var k = connection.State;

    connection.Clone();
    client.Disconnect();
Если вы считаете, что предыдущий ответ может нуждаться в некоторых обновлениях, почему бы не отредактировать этот ответ, а не опубликовать новый и не скопировать / вставить? ThatTechGuy

Похожие вопросы