如何在Ubuntu中用Python连接FDB数据库?连接失败(SQLCODE:-902)
问题定位与解决步骤
从错误信息来看,当前是网络连接层面的失败,还没到验证密码、识别数据库路径的阶段,SQLCODE -902对应的就是网络连接类问题。以下是具体排查和解决方向:
1. 主机/端口连通性验证
- 在运行Python代码的机器上,先测试主机可达性:
如果ping不通,说明主机地址错误、目标主机离线,或者中间防火墙拦截了ICMP包。ping 15.206.100.218 - 再测试Firebird默认端口(3050)是否开放:
如果连接被拒绝,说明目标主机的Firebird服务未启动,或端口被防火墙拦截。telnet 15.206.100.218 3050 # 或用nc命令 nc -zv 15.206.100.218 3050
2. 检查Firebird服务状态
登录目标Ubuntu主机,确认Firebird服务是否正常运行:
sudo systemctl status firebird4.0
如果服务未启动,执行启动命令:
sudo systemctl start firebird4.0 # 设置开机自启 sudo systemctl enable firebird4.0
3. 配置防火墙规则
- 检查Ubuntu本地防火墙(ufw)是否放行3050端口:
若无对应规则,添加端口放行:sudo ufw statussudo ufw allow 3050/tcp sudo ufw reload - 如果是云主机,同时检查云服务商的安全组配置,确保入站规则允许3050端口的TCP连接。
4. 调整Firebird监听配置
登录目标主机,修改/etc/firebird/4.0/firebird.conf配置文件:
- 找到
RemoteBindAddress参数,将默认的127.0.0.1注释掉,改为0.0.0.0(允许所有IP访问):RemoteBindAddress = 0.0.0.0 - 重启Firebird服务使配置生效:
sudo systemctl restart firebird4.0
5. 修正Python连接参数
网络连通后,注意远程连接时的数据库路径格式,需整合主机地址和文件路径:
# 格式:主机地址:数据库绝对路径 database = '15.206.100.218:/home/ubuntu/Firebird4.0/A.fdb' con = fdb.connect(database=database, user=user, password=pswd2, charset='UTF8')
无需单独传递host参数,直接将主机信息写入database参数即可。
内容的提问来源于stack exchange,提问作者sunShine
相关产品推荐
相关产品推荐

