Подключение Visual Studio к туннелированному SSH-серверу MySQL

Я искал обходной путь для настройки подключения к базе данных.
Я видел, что открытие порта 3306 опасно, и вместо этого мы должны использовать SSH-туннель для подключения к базе данных.

Я настроил свой сервер MySQL с помощью докера и успешно подключил его с помощью MySQL Workbench.

Теперь мне нужно настроить и подключить его к Visual Studio 2022, чтобы иметь возможность делать запросы к базе данных.

Visual Studio 2022 поддерживается только данными MySQL через пакеты NuGet, которые не имеют настройки соединения с графическим интерфейсом.

Я установил Visual Studio 2019, которая официально поддерживается базой данных MySQL и может быть настроена через источник данных.

Как я могу настроить подключение базы данных MySQL к моей Visual Studio, если она настроена на SSH-туннель.
В окне «Добавить соединение» отображается только основная информация о соединении. Я не уверен, как настроить это через туннель SSH.

Заранее спасибо.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
119
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете заполнить следующую информацию, чтобы настроить подключение к базе данных MySql.

Имя сервера: введите IP-адрес MySQL, который равен 127.0.0.1, как показано в информации о вашем SSL-соединении.

Имя пользователя: введите имя пользователя Mysql.

Пароль: введите пароль Mysql

Имя базы данных: введите тестовую базу данных

Надеюсь, это поможет вам

Этот IP-адрес является IP-адресом MySQL на моем сервере. Я использую SSH Tunnel для подключения по ssh к моему серверу и получения доступа к моему SQL-серверу.

CSAPawn 18.11.2022 10:27
Ответ принят как подходящий

Из соображений безопасности иногда доступ к серверу базы данных возможен только через SSH. Например, служба MySql установлена ​​на сервере A, и к машине A может получить доступ только машина B, а среда развертывания может быть на машине C. В этом случае сервер C подключается к серверу A через сервер B. В настоящее время требуется подключение SSH и библиотека классов 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 address
                int SSHPort = ;              // SSH port
                string SSHUser = "user";           // SSH username
                string SSHPassword = "pwd";           // SSH password

                string sqlIPA = "127.0.0.1";// Map addresses  In fact, it is possible to write other MySql on Linux My.cnf bind-address can be set to 0.0.0.0 or not
                string sqlHost = "192.168.1.20"; // The IP address of the machine installed by mysql can also be an intranet IP, for example: 192.168.1.20
                uint sqlport = ;        // Database port and mapping port
                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();
                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); // map to local port
                        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[];
                        }
                        catch (Exception ee)
                        {
                            MessageBox.Show(ee.Message);
                        }
                        finally
                        {
                            conn.Close();
                        }

                        client.Disconnect();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }
    }

Примечание. В случае возникновения ошибки вы можете остановить службу MySql на локальном компьютере (компьютере разработки).

Требуемая dll: SSHDLL.rar

За это. SSH.net — отличный способ подключения баз данных через SSH. Я нашел это на прошлой неделе. Я забыл установить это как ответ на это. В любом случае спасибо

CSAPawn 23.11.2022 14:22

Другие вопросы по теме

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

Как я могу вернуть список из асинхронного метода?
Xamarin.Forms — переменная на нескольких страницах
Получение нулевого значения при возврате Generic.List в модульном тесте из данных в памяти
Какие действия обновляют LastAccessTime?
Как расширить контекстное меню проводника Windows с помощью .NET6?
Как зарегистрировать службу, которая реализует универсальный интерфейс, который также реализует универсальный интерфейс
Как я могу создать двумерный массив, в котором индексы имеют два разных типа файлов в каталоге?
Я использую пакет NuGet CompareNetObjects, чтобы получить разницу между двумя сложными объектами одного типа. Мне нужно получить только новые значения
«Не удается преобразовать нулевой литерал в ненулевой ссылочный тип» при использовании @ref в компоненте Blazor
Постоянное вращение дуги окружности путем применения поворотов от 0 до 360 для имитации анимированного счетчика