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

Qt程序无法通过IP连接MySQL数据库,仅localhost可正常连接

Qt程序无法通过IP连接MySQL仅localhost可用的解决建议
  • 检查MySQL用户权限配置
    登录MySQL控制台,执行以下命令查看用户mojito的访问权限范围:

    SELECT user, host FROM mysql.user;
    

    如果mojito对应的host字段只有localhost,说明该用户仅允许本地socket连接,需要授权其通过IP访问:

    • 允许任意IP访问:
      GRANT ALL PRIVILEGES ON customdb.* TO 'mojito'@'%' IDENTIFIED BY 'J0a1m8';
      
    • 允许指定IP(比如设备IP为192.168.1.100)访问:
      GRANT ALL PRIVILEGES ON customdb.* TO 'mojito'@'192.168.1.100' IDENTIFIED BY 'J0a1m8';
      

    执行授权后刷新权限:

    FLUSH PRIVILEGES;
    
  • 检查MySQL绑定地址配置
    打开MySQL配置文件(常见路径为/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),找到bind-address配置项:

    • 若该值为127.0.0.1,MySQL仅监听本地回环接口,无法接收IP形式的连接,需修改为0.0.0.0(允许所有IP)或设备的实际IP地址。
      修改完成后重启MySQL服务:
    sudo systemctl restart mysql
    
  • 验证Qt MySQL驱动兼容性
    确认Qt使用的MySQL驱动与系统中安装的MySQL版本匹配,版本不兼容可能导致连接异常:

    • 查看驱动依赖的MySQL库版本:
      ldd /path/to/Qt/lib/plugins/sqldrivers/libqsqlmysql.so
      

    对比系统中已安装的MySQL库版本,若不匹配,需重新编译Qt的MySQL驱动或同步升级MySQL版本。

  • 检查防火墙/安全组规则
    确认系统防火墙未拦截3306端口的连接:

    • 临时关闭防火墙测试连接:
      sudo ufw disable
      

    若测试连接成功,说明是防火墙规则问题,添加允许3306端口的规则:

    sudo ufw allow 3306
    sudo ufw enable
    
  • 用MySQL命令行排查连接问题
    在终端执行以下命令测试IP连接,区分是MySQL配置问题还是Qt代码问题:

    mysql -h 127.0.0.1 -u mojito -p customdb
    

    若命令行连接失败,聚焦排查MySQL的权限、绑定地址配置;若命令行能连接,再检查Qt驱动或代码中的其他配置(如端口是否正确,默认3306可通过db.setPort(3306)显式指定)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:35:37