当前位置: 首页 > web >正文

HeidiSQL 连接 MySQL 报错 10061

遇到 HeidiSQL 连接 MySQL 报错 10061(Connection refused)时,通常与 网络配置、MySQL 服务状态或权限设置 有关。以下是详细的排查和解决方案:


一、错误原因分析

错误 10061 表示客户端(HeidiSQL)无法与 MySQL 服务器建立连接,常见原因包括:

  1. MySQL 服务未运行
  2. MySQL 未监听指定的 IP 或端口
  3. 防火墙/安全组阻止连接
  4. 用户权限未允许远程访问
  5. HeidiSQL 配置错误(如主机名、端口、用户或密码不正确)。

二、解决方案

步骤 1:确认 MySQL 服务是否运行
# Linux
sudo systemctl status mysql  # 检查服务状态
sudo systemctl start mysql   # 若未运行,启动服务# Windows
通过服务管理器检查 MySQL 服务状态,或在命令行运行:
net start mysql

步骤 2:检查 MySQL 监听的地址和端口
  1. 查看 MySQL 监听的 IP 和端口

    # Linux
    ss -tuln | grep 3306  # 默认端口 3306
    # 或
    netstat -tulnp | grep mysql# Windows
    netstat -ano | findstr :3306
    
  2. 常见问题

    • 如果输出显示 127.0.0.1:3306,则 MySQL 仅监听本地连接。
    • 如果显示 0.0.0.0:3306,则允许所有 IP 连接。
  3. 修改 MySQL 配置文件(若需允许远程连接):

    # 编辑 MySQL 配置文件(路径如 /etc/mysql/my.cnf 或 /etc/my.cnf)
    [mysqld]
    bind-address = 0.0.0.0  # 允许所有 IP 连接(注意安全性)
    # 或指定具体 IP,如 bind-address = 192.168.1.100
    
  4. 重启 MySQL 生效配置

    sudo systemctl restart mysql
    

步骤 3:检查防火墙/安全组
  1. 临时关闭防火墙测试(仅限测试环境):

    # Ubuntu/Debian
    sudo ufw disable# CentOS/RHEL
    sudo systemctl stop firewalld# Windows
    暂时关闭 Windows 防火墙
    
  2. 若需保留防火墙,开放 3306 端口

    # Ubuntu/Debian
    sudo ufw allow 3306/tcp# CentOS/RHEL
    sudo firewall-cmd --permanent --add-port=3306/tcp
    sudo firewall-cmd --reload# 云平台(如 AWS/Azure):
    确保安全组允许入站流量到 3306 端口
    

步骤 4:确保用户有远程访问权限
  1. 登录 MySQL 并检查用户权限

    mysql -u root -p
    
  2. 创建或修改允许远程访问的用户

    -- 示例:创建允许从任意 IP 连接的用户
    CREATE USER 'remote_user'@'%' IDENTIFIED BY '密码';
    GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    注意:避免直接使用 root 用户远程登录,建议创建专用用户。


步骤 5:验证网络连通性

从 HeidiSQL 所在的客户端机器测试到 MySQL 服务器的端口连通性:

telnet 服务器IP 3306  # 若成功,会显示空白;若失败,说明连接被阻断

步骤 6:检查 HeidiSQL 配置
  1. 确保配置正确

    • 主机名/IP:填写 MySQL 服务器的 IP 地址(而非 localhost,除非是本地连接)。
    • 端口:默认 3306,若修改过需对应。
    • 用户名和密码:确保与 MySQL 中的用户匹配。
  2. 示例配置
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


步骤 7:尝试本地连接测试

如果问题仅出现在远程连接,尝试通过本地连接验证 MySQL 是否正常:

mysql -u 用户名 -p -h 127.0.0.1  # 使用 IP 而非 localhost

三、常见场景处理

场景 1:本地连接失败
  • 可能原因root@localhost 使用了 auth_socket 插件(无需密码)。
  • 解决方法
    -- 切换为密码认证
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
    FLUSH PRIVILEGES;
    
场景 2:远程连接被拒绝
  • 可能原因:MySQL 默认禁止远程 root 登录。
  • 解决方法
    CREATE USER 'remote_user'@'%' IDENTIFIED BY '密码';
    GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
    

四、验证连接

完成上述步骤后,在 HeidiSQL 中重新尝试连接:

  1. 打开 HeidiSQL,点击 新建会话
  2. 填写正确的 主机名/IP、端口、用户名和密码
  3. 点击 测试连接,确认是否成功。

五、总结

问题类型解决方案
服务未运行启动 MySQL 服务。
端口未监听修改 bind-address 配置并重启服务。
防火墙阻止开放 3306 端口或暂时关闭防火墙。
用户权限不足创建允许远程访问的用户并授权。
HeidiSQL 配置错误确保主机名/IP、端口、用户名和密码正确。

如果问题仍未解决,请提供以下信息以便进一步诊断:

  1. HeidiSQL 的连接配置截图(隐藏密码)。
  2. MySQL 服务状态和监听端口的输出。
  3. MySQL 用户权限查询结果(SELECT User, Host FROM mysql.user;)。
  4. 客户端到服务器的 telnetnc 测试结果。
http://www.xdnf.cn/news/17722.html

相关文章:

  • 工业相机终极指南:驱动现代智能制造的核心“慧眼”
  • mimiconda+vscode
  • 基恩士FSN10系列数字光纤传感器全新型光纤放大器 FSN11CP
  • 後端開發技術教學(五) 魔術方法、類、序列化
  • Day02——Docker
  • Avalonia实例实战六:控件的拖放
  • 前端面试:promise...then与asnyc ...await
  • 【算法训练营Day23】贪心算法part1
  • 前端工程化:pinia
  • 分享一款基于STC8H8K32U-45I-LQFP48单片机的4路数字量输入输出模块
  • 当AI重塑世界:普通人如何成为“主动进化者”?
  • 第16届蓝桥杯Python青少组_省赛_中/高级组_2025年5月真题
  • VirtualBox虚拟机网卡配置
  • LeetCode 2438.二的幂数组中查询范围内的乘积:模拟(前缀和可选)
  • Ansible 面试题 20250811
  • ansible学习第一天
  • 逐际动力开源运控 tron1-rl-isaacgym 解读与改进
  • 聊天室全栈开发-保姆级教程(Node.js+Websocket+Redis+HTML+CSS)
  • 当C#遇上Notepad++:实现GCode可视化编辑的跨界实践
  • ArkUI中的自定义组件(一)
  • 【MYSQL】MySQL中On duplicate key update
  • FlinkSql(详细讲解一)
  • Dify入门指南(2):5 分钟部署 Dify:云服务 vs 本地 Docker
  • Speech Databases of Typical Children and Children with SLI 数据集解读
  • Vue 中的 Class 与 Style 绑定详解1
  • 数据类型 string
  • MCU中的存储器映射(Memory Map)
  • 【CF】Day125——图论三题
  • 训推一体 | 暴雨X8848 G6服务器 x Intel®Gaudi® 2E AI加速卡
  • C语言变量的声明和定义有什么区别?