Я искал обходной путь для настройки подключения к базе данных.
Я видел, что открытие порта 3306 опасно, и вместо этого мы должны использовать SSH-туннель для подключения к базе данных.
Я настроил свой сервер MySQL с помощью докера и успешно подключил его с помощью MySQL Workbench.
Теперь мне нужно настроить и подключить его к Visual Studio 2022, чтобы иметь возможность делать запросы к базе данных.
Visual Studio 2022 поддерживается только данными MySQL через пакеты NuGet, которые не имеют настройки соединения с графическим интерфейсом.
Я установил Visual Studio 2019, которая официально поддерживается базой данных MySQL и может быть настроена через источник данных.
Как я могу настроить подключение базы данных MySQL к моей Visual Studio, если она настроена на SSH-туннель.
В окне «Добавить соединение» отображается только основная информация о соединении. Я не уверен, как настроить это через туннель SSH.
Заранее спасибо.
Вы можете заполнить следующую информацию, чтобы настроить подключение к базе данных MySql.
Имя сервера: введите IP-адрес MySQL, который равен 127.0.0.1, как показано в информации о вашем SSL-соединении.
Имя пользователя: введите имя пользователя Mysql.
Пароль: введите пароль Mysql
Имя базы данных: введите тестовую базу данных
Надеюсь, это поможет вам
Из соображений безопасности иногда доступ к серверу базы данных возможен только через 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. Я нашел это на прошлой неделе. Я забыл установить это как ответ на это. В любом случае спасибо
Этот IP-адрес является IP-адресом MySQL на моем сервере. Я использую SSH Tunnel для подключения по ssh к моему серверу и получения доступа к моему SQL-серверу.