树莓派4B上MySQL4.1.22远程连接失败求助
问题:MySQL4.1.22远程连接失败
我因使用仅兼容MySQL4的CAO faktura 1.4,在树莓派4B上编译安装了MySQL4.1.22,安装过程已完成。
已做的配置操作:
- 在my.cnf的[mysqld]段添加:
bind-address = 0.0.0.0
- 为root用户授权远程访问:
grant all on *.* to root@'%.%.%.%' identified by 'mypass';
- 通过
SELECT user, host FROM mysql.user;确认用户权限配置正常,同时也创建了另一用户并授予全量远程权限。 - 因树莓派无默认防火墙,安装ufw并开放了my.cnf中指定的3307端口TCP连接。
问题现象:
- 从Windows设备通过MySQL Workbench以TCP/IP方式连接时,提示"连接失败"。
- 使用telnet测试时,初始能建立连接并返回如下内容,但3秒后连接断开:
4.1.22mysql4-log♥aGzV}2~I,☻0R..:vg$vMYW Connection to host lost.
- MySQL4的错误日志显示服务正常启动:
231019 21:23:42 mysqld started 231019 21:23:42 InnoDB: Started; log sequence number 0 44138 /usr/local/mysql4/libexec/mysqld: ready for connections. Version: '4.1.22mysql4-log' socket: '/usr/local/mysql4/var/mysqld.sock' port: 3307 Source distribution
排查与解决思路
1. 协议兼容性问题(核心大概率原因)
MySQL4.1使用旧版认证协议,现代MySQL Workbench默认配置可能不兼容该协议:
- 打开MySQL Workbench连接设置,切换到Advanced选项卡,添加配置项:
useLegacyAuthPlugin=true; - 若Workbench版本过高无此选项,建议降级到MySQL Workbench 6.x版本,或使用MySQL 5.5及以下版本的客户端工具(比如旧版mysql命令行客户端)连接。
2. 调整连接超时参数
MySQL4.1默认连接超时参数可能过短,导致握手后快速断开。在my.cnf的[mysqld]段添加:
wait_timeout = 600 interactive_timeout = 600
保存后重启MySQL服务:
/usr/local/mysql4/bin/mysqladmin -u root -p shutdown /usr/local/mysql4/bin/mysqld_safe &
3. 统一字符集配置
MySQL4.1默认字符集与现代客户端存在差异,可能引发解析错误。在my.cnf的[mysqld]段添加:
default-character-set=latin1 character-set-server=latin1
重启服务后再次测试连接。
4. 排查网络隐性拦截
- 若为公网远程连接,检查树莓派所在路由器的端口转发规则,确保3307端口已正确转发到树莓派内网IP;
- 临时关闭Windows端防火墙,测试是否能正常连接;
- 在树莓派上用tcpdump抓包,确认数据包交互情况:
tcpdump -i any port 3307 -vv
查看是否有客户端连接请求,以及MySQL是否发送响应包,判断是否存在中间网络拦截。
内容的提问来源于stack exchange,提问作者Louis Eiden
相关产品推荐
相关产品推荐

