Flutter使用mysql1包连接本地MySQL报Connection refused错误如何解决
报错核心原因
Connection refused errno 111 是客户端无法和目标MySQL服务建立TCP连接导致,常见于移动端访问本地开发环境的场景,对应解决方案如下:
解决方案
1. 优先修正主机地址配置
- 如果你用安卓模拟器运行应用:安卓模拟器的
localhost指向模拟器自身,要访问宿主机的MySQL需要将host字段改为模拟器预留的宿主机映射地址10.0.2.2 - 如果你用局域网真机调试应用:保证手机和开发电脑在同一WiFi下,将
host改为开发电脑的局域网IP(通常为192.168.x.x格式,可通过电脑的网络设置查看)
2. 检查开发侧网络限制
- 关闭开发电脑的系统防火墙,或者手动放行3306端口的入站访问规则
- 确认MySQL服务处于正常运行状态,本地可通过
mysql -u root -p命令正常登录
3. 修正MySQL访问权限配置
默认MySQL的root用户仅允许本地(127.0.0.1)登录,需手动授权远程访问权限:
- 本地登录MySQL命令行
- 执行授权SQL:
GRANT ALL PRIVILEGES ON fluttertest.* TO 'root'@'%' IDENTIFIED BY 'abcd@1234'; FLUSH PRIVILEGES;
- 打开MySQL配置文件(Windows为my.ini,Linux/macOS为my.cnf),将
bind-address参数从127.0.0.1改为0.0.0.0,保存后重启MySQL服务
补充注意事项
你提供的测试SQL存在语法错误,字段列表里password后多了多余的逗号,需修正为:
await value.query('insert into user (email, password) values (?, ?)', ['Bob', 'bob@bob.com']);
内容的提问来源于stack exchange,提问作者Ragawender Sivanraj
相关产品推荐
相关产品推荐

