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

如何用C#正确连接MySQL数据库?连接失败问题求助

解决C#连接Azure上XAMPP MySQL的认证失败问题

看到你的错误提示Access denied for user 'user'@'202.xxx.xxx.xxx' (using password: NO),这里有两个核心问题:一是MySQL服务器没正确接收到你的密码,二是你的客户端IP没有访问权限。结合Azure+XAMPP的环境,给你一步步排查方案:

1. 修正C#连接字符串格式

虽然你写了密码,但驱动可能没正确解析,加上Azure环境的特殊要求,建议调整连接字符串:

static string connstring = @"server=my.live.ip;user id=user;password=123;database=db_name;port=3306;AllowPublicKeyRetrieval=true;SslMode=None";
  • 用user id替代userid(部分驱动对命名格式更敏感)
  • 添加AllowPublicKeyRetrieval=true:解决公网连接时的密钥检索问题
  • 添加SslMode=None:XAMPP默认MySQL未开启SSL,强制关闭避免SSL认证失败

另外,建议使用最新的MySqlConnector NuGet包,旧的MySQL.Data驱动在公网连接场景下容易出现兼容性问题。

2. 授权MySQL用户访问权限

错误里的user@202.xxx.xxx.xxx说明你的本地IP没有被MySQL授权登录,需要在Azure服务器的MySQL里配置:

  • 登录XAMPP的PhpMyAdmin(访问http://你的AzureIP/phpmyadmin),找到你的user用户
  • 在权限设置里,添加一条新权限:主机填你的本地IP(202.xxx.xxx.xxx),或者用%允许所有IP(仅测试用,生产环境不建议这么做)
  • 也可以用MySQL命令行执行:
-- 授权指定IP访问目标数据库
GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'202.xxx.xxx.xxx' IDENTIFIED BY '123';
-- 刷新权限使设置生效
FLUSH PRIVILEGES;

3. 开放Azure服务器的3306端口

Azure默认会屏蔽外部对3306端口的访问,需要在Azure门户配置:

  • 找到你的Azure虚拟机,进入「网络」选项卡
  • 添加一条入站安全规则,允许来源IP(你的本地IP)访问端口3306,协议选TCP
  • 测试时可以暂时允许所有来源IP,确认连接成功后再缩小范围

4. 调整XAMPP的MySQL监听配置

默认XAMPP的MySQL只监听本地(127.0.0.1),需要修改配置让它接受外部连接:

  • 打开XAMPP控制面板,点击MySQL的「Config」→「my.ini」
  • 找到bind-address项,把值改成0.0.0.0(监听所有网卡)
  • 重启MySQL服务,确保配置生效

最后验证

先试试用Navicat/MySQL Workbench这类工具连接你的Azure MySQL,如果工具能连上,再回到C#代码测试,这样能快速定位是代码问题还是环境问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:47:31