C#连接XAMPP运行的SQL数据库失败,报TCP Provider错误40求助
解决XAMPP MySQL远程连接错误的核心方案
首先得戳破一个关键误区:你用错数据库连接组件了!
XAMPP默认搭载的是MySQL数据库,但你的代码里用的是SqlConnection——这是微软专门为SQL Server设计的连接类,它会直接尝试去连接SQL Server服务,而不是你的MySQL,这就是报错里反复提到SQL Server的原因,完全是方向错了!
下面一步步帮你解决问题:
1. 替换为MySQL专属的连接组件与字符串
如果你用的是.NET环境,需要先安装MySqlConnector NuGet包(这是目前最常用的MySQL .NET驱动),然后修改你的代码和连接字符串:
修正后的代码示例:
using MySqlConnector; // 注意连接字符串是MySQL的格式,root默认无密码,如有设置请补充Pwd字段 string connectionString = @"Server=你的笔记本IP;Database=hoffmann;Uid=root;Pwd=;"; using MySqlConnection cnn = new MySqlConnection(connectionString); try { cnn.Open(); Console.WriteLine("MySQL连接成功!"); } catch (Exception ex) { Console.WriteLine("连接失败原因:" + ex.Message); } finally { cnn.Close(); }
2. 配置MySQL允许远程连接
XAMPP的MySQL默认只允许本地(127.0.0.1)访问,需要手动开启远程权限:
- 打开XAMPP控制面板,点击MySQL的「Shell」按钮,进入命令行
- 执行以下授权命令(如果root有密码,把
''换成你的密码):GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION; FLUSH PRIVILEGES; - 找到XAMPP安装目录下的
mysql/bin/my.ini(Windows)或my.cnf(Linux/Mac),找到bind-address = 127.0.0.1这一行,改成bind-address = 0.0.0.0,保存后重启MySQL服务
3. 检查网络与防火墙设置
- 确认你的两台设备在同一局域网内,能通过IP互相ping通
- 开启笔记本上的防火墙允许3306端口(MySQL默认端口)的入站请求,第三方防火墙也要同步设置
原错误里的SQL Server提示完全是因为用了错误的连接类,换成MySQL的组件后,再配合远程权限配置,就能解决问题了!
内容的提问来源于stack exchange,提问作者user12175610




