Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在远程桌面上通过SSH连接MySql数据库时出现1042错误_C#_Mysql_Ssh - Fatal编程技术网

C# 在远程桌面上通过SSH连接MySql数据库时出现1042错误

C# 在远程桌面上通过SSH连接MySql数据库时出现1042错误,c#,mysql,ssh,C#,Mysql,Ssh,我无法通过远程桌面上的SSH连接到MySql数据库。我使用C和SshNet库。事实上,我可以借助流行的工具(如SQL Manager Lite)连接到数据库,但是当我使用工具的相同设置执行相同的操作时,总是得到 Mysql 1042错误无法连接到任何指定的Mysql主机 此外,my.cnf中的零件编辑为 绑定地址=0.0.0.0和 跳过网络。是的,我尝试了绑定地址上的本地主机和服务器ip-同样的问题 我还将所有权限授予了该用户。再检查一遍 请看代码,也许我遗漏了什么 很抱歉,我正在使用表单,我只

我无法通过远程桌面上的SSH连接到MySql数据库。我使用C和SshNet库。事实上,我可以借助流行的工具(如SQL Manager Lite)连接到数据库,但是当我使用工具的相同设置执行相同的操作时,总是得到

Mysql 1042错误无法连接到任何指定的Mysql主机

此外,my.cnf中的零件编辑为 绑定地址=0.0.0.0和 跳过网络。是的,我尝试了绑定地址上的本地主机和服务器ip-同样的问题

我还将所有权限授予了该用户。再检查一遍

请看代码,也许我遗漏了什么

很抱歉,我正在使用表单,我只需要GUI:{

谢谢大家

PasswordConnectionInfo connectionInfo=新的PasswordConnectionInfo服务器IP、sshlogin、sshpass; connectionInfo.Timeout=TimeSpan.FromSecond30; 使用var client=new SshClientconnectionInfo { 尝试 { 客户端连接; 如果client.IsConnected { label1.Text=ssh-ok; } 其他的 { label1.Text=ssh; } var端口=新转发端口Remote3306,服务器IP,3306; client.AddForwardedPortport; 港口。开始; 如果端口已启动 { label5.Text=端口打开; } 其他的 { label5.Text=端口号; } var conn_info=Server=serverip;Port=3306;Database=Database;Uid=remoteuser;Pwd=password;; bool isConn=false; MySqlConnection-conn=null; 尝试 { conn=新的MySqlConnectionconn\u信息; 康涅狄格开放大学; isConn=true; } 抓住一个例外 { label3.Text=检查连接字符串。; label4.Text=一条消息; label5.Text=a_ex.ToString; } 捕获MySqlException { 字符串sqlErrorMessage=消息:+ex.Message+\n+ 来源:+ex.来源+\n+ 编号:+ex.编号; label3.Text=sqlErrorMessage; isConn=false; 交换机出厂号 { 案例1042://无法连接到任何指定的MySQL主机检查服务器、端口 打破 案例0://访问被拒绝 打破 违约: 打破 } } 最后 { 如果连接状态==连接状态打开 { 康涅狄格州关闭; } } 客户端。断开连接; label2.Text=isConn.ToString; } catch SocketException exd { label5.Text=exd.Message; } }
在代码中,您使用的是var port=new ForwardedPortRemote3306,serverip,3306;它将连接转发到远程计算机上的端口3306到本地计算机上的3306。这就是您要做的吗?似乎您希望ForwardPortLocal或调用该函数的任何函数将连接转发到另一个方向。

我也面临同样的问题。MySql数据库在ubuntu上运行,需要SSH连接才能连接。我从下载了sshnet.NET 4.0库。然后,将库导入到项目中,遵循以下步骤:

建立ssh连接

var client=linux服务器的新SshClientip地址、用户名、密码;client.Connect

检查客户端是否已连接。如果已连接,则将端口从Linux服务器转发到本地服务器。这是一种神奇的线路

var portForwardedL=新的forwardedportlocal3306127.0.0.3306; client.AddForwardedPortportForwardedL; portForwardedL.Start

现在只需使用转发的serverip和端口连接MySql数据库

      using (MySqlConnection con = new MySqlConnection("SERVER=127.0.0.3;PORT=3306;UID=username;PWD=password;DATABASE=database_name"))
            {
                using (MySqlCommand com = new MySqlCommand("SELECT * FROM cities", con))
                {
                    DataSet ds = new DataSet();
                    MySqlDataAdapter da = new MySqlDataAdapter(com);
                    da.Fill(ds);
                    foreach (DataRow drow in ds.Tables[0].Rows)
                    {
                        Console.WriteLine("From MySql: " + drow[1].ToString());
                    }
                }
            }

就是这样!它像魔术一样工作!!!请确保关闭ssh连接。

你有错误吗?异常?你尝试过谷歌搜索吗..如果没有检查这篇文章给Ron Beyer:我发现异常,这是MySQL 1042错误。给Methodman:是的,特别是这一个,还有许多其他的。我在谷歌上搜索过,是的。嗨,我对SS不太在行所以我在这里尝试了所有可能的变体:var port=newforwardedportlocal3306,serverip,3306;
var port=newforwardedportlocal0,serverip,3306;var port=newforwardedportlocalhost,0,serverip,3306;var port=newforwardedportlocalhost,3306,serverip,3306;ForwardedPortRemote也是如此。@aquatko关于应该在哪里使用serverip和应该在哪里使用localhost,可能会有一些混淆。假设您正在本地主机上运行代码,并且尝试连接到serverip上的MySQL,那么您实际上需要在psueCode中执行以下操作:ssh到serverip,然后转发PortLocal3306、localhost、3306,最后是MySQL\u connectlocalhost:3306非常感谢,伙计。我尝试了你在localhost上提出的建议,但没有成功,但在127.0.0.1上得到了成功。祝你好运。