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

C#本地XAMPP连MySQL成功 无法连接Namecheap cPanel数据库

问题场景

本地C#程序通过XAMPP连接本地MySQL服务运行正常,无法连接Namecheap平台cPanel中phpMyAdmin管理的站点MySQL数据库,现有连接实现代码、工具界面如下,需对应排查解决。

现有连接实现代码
private void SourceServerConnMySql()
{
    string server = TxBxSourceServer.Text;
    string userName = TxBxSourceUserName.Text;
    string pass = TxBxSourcePassword.Password;
    string port = TxBxSourcePort.Text;
    string connectionString = "host='" + server + "'; user='" + userName + "'; Password='" + pass + "'; port= '"+ port +"' ; Connection Timeout=30;";
    try
    {
        MySqlConnection conn = new MySqlConnection(connectionString);
        conn.Open();
        if (conn.State == System.Data.ConnectionState.Open)
        {
            ImageRightGif.Visibility = Visibility.Visible;
            successTextBlock.Text = "Database has been successfully connected and fetched.";
            SuccessDelay();
            ErrorTextBlock.Text = "";
            ImageErrorGif.Visibility = Visibility.Hidden;
            infoTextBlock.Text = "";
            ImageInfoGif.Visibility = Visibility.Hidden;

            string query = "show databases;";
            MySqlCommand comm = new MySqlCommand(query, conn);
            MySqlDataReader dr = comm.ExecuteReader();

            CoBoxDB.Items.Clear();
            CoBoxDB.Items.Add("Select a Database . . .");
            ProgressBar();
            while (dr.Read())
            {
                string databases = dr.GetString(0);
                CoBoxDB.Items.Add(databases);
            }

        }
        else
        {
            ImageErrorGif.Visibility = Visibility.Visible;
            ErrorTextBlock.Text = "Could not connect to the database.";
            ErrorDelay();
            successTextBlock.Text = "";
            ImageRightGif.Visibility = Visibility.Hidden;
            infoTextBlock.Text = "";
            ImageInfoGif.Visibility = Visibility.Hidden;
        }
    }
    catch (Exception ex)
    {
        ImageErrorGif.Visibility = Visibility.Visible;
        ErrorTextBlock.Text = ex.Message;
        ErrorDelay();
        successTextBlock.Text = "";
        ImageRightGif.Visibility = Visibility.Hidden;
        infoTextBlock.Text = "";
        ImageInfoGif.Visibility = Visibility.Hidden;
    }
}
工具界面

数据库连接工具应用界面

排查步骤&解决方案

按优先级从高到低排查:

  • 先配置远程访问白名单:Namecheap共享主机默认禁止所有外部IP直连MySQL,必须登录cPanel找到「Remote MySQL(远程MySQL)」功能,把你当前本地电脑的公网IP添加到允许访问列表,添加后等待3-5分钟生效再测试。临时调试可填%允许所有IP访问,测试完成必须立即删除该规则,避免安全风险。
  • 核对所有连接参数:
    • 主机地址不要直接填网站域名,Namecheap共享主机的MySQL主机地址在cPanel「MySQL Databases」页面明确标注,通常为类似serverxx.web-hosting.com的格式,以页面显示为准。
    • 端口不要默认填3306,同样以cPanel数据库信息页标注的端口为准,部分特殊套餐会使用非默认端口。
    • 数据库用户名、密码不是cPanel登录账号,需在cPanel中单独创建数据库用户,且要给用户绑定目标数据库的访问权限;注意Namecheap的数据库用户名默认带cPanel账号前缀,比如cPanel账号为myweb,创建的用户名为dbuser,实际完整用户名是myweb_dbuser,不要漏写前缀。
  • 修正代码中的连接字符串错误:现有连接字符串里port参数前后多了冗余的单引号和空格,会导致端口解析失败;且未指定目标数据库名、缺少SSL相关配置,修正后的连接字符串示例如下:
// 替换yourTargetDbName为你要连接的具体数据库名
string connectionString = $"Server={server};Port={port};Database={yourTargetDbName};Uid={userName};Pwd={pass};Connection Timeout=30;SslMode=None;";

*如果开启了数据库SSL强制连接,把SslMode=None改为SslMode=Required即可。

  • 先做网络连通性校验:跑代码前先在本地终端执行网络测试,Windows下可执行命令Test-NetConnection 你的MySQL主机地址 -Port 你填的端口号,如果返回的TcpTest结果为失败,说明网络层不通,优先排查白名单、端口、本地防火墙/网络是否拦截了对应端口的出站请求,网络通了再测代码。
  • 调整连接测试逻辑:普通数据库用户没有全局查看所有数据库的权限,就算连接成功,执行show databases;也只能看到自己被授权的单个库,甚至会因为权限不足报错。不要用这个语句判断连接是否成功,直接在连接字符串里指定你自己的目标数据库名,连接成功后查自建库内的测试表验证即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:15:56