我正在开发一个网页(ASP.NET/C#),它通过 SSH 查询远程服务器上的(MySQL)数据库。我正在使用这两个库(mysql-connector-net-6.9.7)和(Renci.SshNet.dll)。
我可以使用远程服务器上的 MySQL Workbench 通过 SSH 连接访问 MySQL 数据库:
“ portal.RemoteServer.edu:22 ”使用“ RemoteServerUsername ”和
“ RemoteServerPassword ”。
这是我的 C# 代码,它不会从远程服务器上的 Clients 表中返回任何数据:
MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder();
connBuilder.AllowBatch = true;
connBuilder.Server = "127.0.0.1";
connBuilder.Port = 3306;
connBuilder.UserID = "LocalHostUserID";
connBuilder.Password = "LocalHostPassword";
connBuilder.Database = "DatabaseName";
var auth =
new PasswordAuthenticationMethod("RemoteServerUsername", "RemoteServerPassword");
ConnectionInfo conInfo =
new ConnectionInfo("portal.RemoteServer.edu", "RemoteServerUsername", auth);
using (SshClient client = new SshClient(conInfo))
{
ForwardedPortLocal port = new ForwardedPortLocal("127.0.0.1", 0, "127.0.0.1", 22);
client.Connect();
client.AddForwardedPort(port);
port.Start();
MySqlConnection conn = new MySqlConnection(connBuilder.ConnectionString);
conn.Open();
conn.ChangeDatabase(connBuilder.Database);
var command = "SELECT * FROM DatabaseName.Clients LIMIT 10";
using (MySqlCommand cmd = new MySqlCommand(command))
{
using (MySqlDataAdapter sda = new MySqlDataAdapter())
{
cmd.Connection = conn;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
}