You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SSH连接MySQL时提示套接字访问权限被禁止如何解决

SSH隧道连接MySQL端口权限报错解决方案

你遇到的An attempt was made to access a socket in a way forbidden by its access permissions报错,本质是程序无法绑定本地指定的3306端口,常见原因和对应解决方法如下:

常见报错原因

  • 本地已经运行了MySQL服务,占用了127.0.0.1的3306端口,导致SSH端口转发无法重复绑定该端口
  • Windows系统下程序没有管理员运行权限,无法绑定部分受系统保护的端口
  • 本地防火墙、安全软件拦截了程序对3306端口的监听请求

最优解决方法:更换本地转发端口

把本地绑定的端口改为未被占用的高位端口即可,比如用3307替代本地3306,修改后的代码如下:

Console.WriteLine("Connecting to MySQL...");
using (var client = new SshClient("ssh sever", "ssh username", "ssh password"))
{
    client.Connect();
    if (client.IsConnected)
    {
        // 修改本地绑定端口为3307
        var portForwarded = new ForwardedPortLocal("127.0.0.1", 3307, "127.0.0.1", 3306);
        client.AddForwardedPort(portForwarded);
        portForwarded.Start();
        // MySQL连接串端口同步改为3307
        using (MySqlConnection con = new MySqlConnection("SERVER=127.0.0.1;PORT=3307;UID=root;PASSWORD=rootPassword;DATABASE=UserDb;SslMode=none"))
        {
            using (MySqlCommand com = new MySqlCommand("SELECT * FROM fhulu", con))
            {
                com.CommandType = CommandType.Text;
                DataSet ds = new DataSet();
                MySqlDataAdapter da = new MySqlDataAdapter(com);
                da.Fill(ds);
                foreach (DataRow drow in ds.Tables[0].Rows)
                {
                    Console.WriteLine(drow[0].ToString() + " -- " + drow[1].ToString() + " -- " + drow[2].ToString());
                }
            }
        }
        client.Disconnect();
    }
}

其他可选解决方法

  • 检查本地端口占用:Windows系统打开命令提示符执行netstat -ano | findstr "3306",如果有进程占用3306端口,可停掉对应进程后再运行程序
  • 提升程序运行权限:右键点击运行的IDE或编译后的exe文件,选择以管理员身份运行后再测试连接
  • 检查本地安全规则:确认防火墙、杀毒软件没有拦截程序的端口监听请求

内容的提问来源于stack exchange,提问作者fhulufhelo hanyahanya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:54:00