gpt4 book ai didi

c# - 通过 SSH 隧道的 mySQL 连接字符串,无需密码

转载 作者:行者123 更新时间:2023-11-30 23:14:39 25 4
gpt4 key购买 nike

我已获得 SSH 访问权限,可以访问运行 mySQL 的服务器。我的访问是通过我的公钥进行身份验证的,不需要其他密码。

使用 Putty,我可以使用我的私钥通过 SSH 连接到服务器,通过命令行工具直接登录到 mySQL 数据库并直接运行 SQL。我希望通过 C# 服务(通过 SSH 连接转发端口 3306)来模拟这一点,不幸的是所有连接字符串都在 http://www.connectionstrings.com/mysql/ 中列出。需要密码。

到目前为止我的粗略代码,使用 MySql.DataSSH.NET:

  PrivateKeyFile file = new PrivateKeyFile(@" [ path to private key ]");
using (var client = new SshClient(" [ server ] ", "ubuntu", file))
{

var port = new ForwardedPortLocal(3306, "localhost", 3306);
client.AddForwardedPort (port);
client.Connect();

var connection = new MySqlConnection(
"server=localhost;database=[database];uid=ubuntu;"
);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "select * from sample";
connection.Open();
Reader = command.ExecuteReader();
while (Reader.Read())
{
string thisrow = "";
for (int i = 0; i < Reader.FieldCount; i++)
thisrow += Reader.GetValue(i).ToString() + ",";
Console.Write(thisrow);
}
connection.Close();
client.Disconnect();
}

在没有 SshClient 部分的情况下运行代码,与本地网络上的数据库(使用已知的用户名和密码)对话,工作正常。使用 SshClient 部分,并在设置隧道后使用断点,我可以远程登录到 localhost:3306 并从 mySQL 获得响应。

但是,connection.Open() 行会抛出以下错误:

Authentication to host 'localhost' for user 'ubuntu' using method 'mysql_native_password' failed with message: Access denied for user 'ubuntu'@'localhost' (using password: YES)

那么……我需要什么连接字符串?还是我在其他地方漏掉了一些微妙的东西?

最佳答案

MySQL 能够拒绝从错误主机连接的登录。也许您不允许 ubuntu 从本地主机连接?

https://dev.mysql.com/doc/refman/5.1/en/connection-access.html

关于c# - 通过 SSH 隧道的 mySQL 连接字符串,无需密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18498955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com