跳至内容

Odoo19 配置 PostgreSQL 数据库连接及故障排查

2026年10月30日 由
Odoo19 配置 PostgreSQL 数据库连接及故障排查
中国 Odoo, 苏州远鼎

Odoo 的每项工作都依赖应用服务器与 PostgreSQL 之间可靠的连接。数据库连接配置错误会导致无法启动、超时、认证失败、性能差甚至更严重问题。Odoo 19 仍使用 PostgreSQL;连接参数主要写在 odoo.conf。

python3 odoo-bin -c /etc/odoo.conf

1. 核心参数

[options]
db_host = localhost
db_port = 5432
db_user = odoo
db_password = admin
db_name = False
参数含义
db_hostlocalhost 表示同机;否则为远程库 IP/主机名
db_port默认 5432(也可自定义如 5433)
db_userOdoo 专用数据库用户(不要用 postgres 超级用户)
db_password对应用户密码——生产请用强密码
db_nameFalse 显示选库界面;或强制连某一个库名

远程主机

生产常把 PostgreSQL 放在另一台机器(扩展、安全、独立资源、备份)。若出现 Connection refused,检查 PG 是否运行、防火墙/5432,以及 postgresql.conf 中的 listen_addresses(必要时如 listen_addresses = '*')。

创建专用用户(示例):

sudo -u postgres createuser -s odoo
sudo -u postgres psql -c "ALTER USER odoo WITH PASSWORD 'admin';"

保护配置文件:

chmod 640 /etc/odoo.conf
chown odoo:odoo /etc/odoo.conf

db_name 与 dbfilter

  • db_name = False — 选库 / 多库
  • db_name = production_db — 自动连指定库
  • dbfilter = ^mycompany.*$ — 只显示匹配的库
  • dbfilter = ^%d$ — 按域名:erp.company.com → 库 erp(常见多租户)

2. 连接池:db_maxconn

db_maxconn = 64

限制 Odoo 到 PostgreSQL 的连接数。超过 PG 的 max_connections 会出现:

FATAL: remaining connection slots are reserved / too many clients already

需结合 Worker 估算,例如 4 workers × 16 ≈ 64。若使用 PgBouncer/PgPool,池参数主要在中间件侧配置。

3. 模板与 SSL

db_template = template0

新建库建议用 template0,环境更干净(template1 可能带历史对象)。

默认连接未加密;生产应通过 PostgreSQL SSL、专网和/或 VPN 加固(在服务端/网络侧配置)。

4. 示例配置

  • 单机 / 固定库 — 见 odoo.conf.single_server.sample
  • 多库 + 域名过滤 — odoo.conf.multi_db_domain.sample
  • 远程 PostgreSQL — odoo.conf.remote_postgres.sample

5. 修改后验证

sudo systemctl restart odoo
sudo journalctl -u odoo -f

psql -h localhost -U odoo -d postgres         # 本机
psql -h 10.0.0.15 -U odoo -d postgres         # 远程

监控连接:

SELECT * FROM pg_stat_activity;

6. 常见错误

错误检查项
Password authentication failed密码、用户、pg_hba.conf
Database does not existpsql -U postgres -l
Too many clients alreadydb_maxconn、PG max_connections、Worker 数
Timeout expired网络、防火墙、主机/端口

7. 最佳实践

  • 为 Odoo 使用专用 PostgreSQL 用户
  • 收紧 odoo.conf 权限
  • 多库时使用 dbfilter
  • 生产尽量将库与应用分机(若条件允许)
  • 不要把 5432 暴露到公网
Odoo19 配置 PostgreSQL 数据库连接及故障排查
中国 Odoo, 苏州远鼎 2026年10月30日
标签
存档