温馨提示×

Linux Informix为什么连接失败

小樊
54
2026-08-27 03:00:01
栏目: 智能运维

Linux 下 Informix 连接失败 的原因很多,常见原因集中在 网络、端口、用户权限、环境变量、数据库状态 等方面。下面按最常见 → 较少见的顺序给你一个排查清单,并附上典型错误信息与解决方法。


一、最常见原因(90% 都在这里)

1️⃣ 数据库服务未启动

现象

SQLCODE = -908
Cannot connect to database server

检查

onstat -g cfg
onstat -

解决

oninit -v

2️⃣ 端口未监听 / 端口错误

Informix 默认端口

sqlexec 9088/tcp

检查端口

netstat -tunlp | grep 9088
ss -lntp | grep 9088

确认 sqlhosts

cat $INFORMIXDIR/etc/sqlhosts

示例:

ol_informix_1210 onsoctcp 127.0.0.1 9088

⚠️ 注意:

  • IP 必须和监听一致
  • 主机名要能解析

3️⃣ INFORMIXDIR / INFORMIXSERVER 设置错误(最常见)

必须设置的环境变量

export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix_1210
export PATH=$INFORMIXDIR/bin:$PATH

检查

echo $INFORMIXDIR
echo $INFORMIXSERVER

错误示例

-908 Cannot connect to database server
-951 User [xxx] is not known on the database server

4️⃣ 用户没有数据库权限

Informix 用户 ≠ Linux 用户

检查用户

onstat -u

授权示例

GRANT CONNECT TO username;

5️⃣ sqlhosts 配置错误

错误示例

ol_informix_1210 onsoctcp localhost 9088

如果 localhost 解析成 IPv6,可能失败

✅ 建议:

ol_informix_1210 onsoctcp 127.0.0.1 9088

二、网络与防火墙问题

6️⃣ 防火墙拦截

telnet 127.0.0.1 9088

关闭防火墙测试

systemctl stop firewalld

7️⃣ SELinux 限制(很多人忽略)

getenforce

临时关闭

setenforce 0

三、连接字符串错误

JDBC / ODBC / ESQL

错误示例

-908
-11090

✅ 正确示例(JDBC):

jdbc:informix-sqli://127.0.0.1:9088/testdb:INFORMIXSERVER=ol_informix_1210

四、数据库状态异常

8️⃣ 数据库处于 quiescent / recovery 状态

onstat -

状态应为:

On-Line

恢复

onmode -m

五、常见错误码速查

错误码 含义
-908 无法连接数据库服务器
-951 用户不存在
-111 端口未监听
-25507 环境变量错误
-387 数据库不存在
-1802 权限不足

六、快速排查顺序(推荐)

1. onstat -         # 是否 On-Line
2. netstat -tunlp | grep 9088
3. echo $INFORMIXDIR
4. echo $INFORMIXSERVER
5. cat $INFORMIXDIR/etc/sqlhosts
6. telnet localhost 9088
7. 查看 online.log

七、如果你愿意,我可以更精确帮你定位

你可以直接贴出以下信息(脱敏即可):

  1. 完整报错信息
  2. 使用方式(JDBC / SQL / dbaccess)
  3. sqlhosts 内容
  4. onstat - 输出
  5. Linux 版本 + Informix 版本

我可以一步一步帮你定位 ✅

0