You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04部署Wiki.js:Root可连PostgreSQL其他用户权限问题

解决Wiki.js非root用户无法连接PostgreSQL的权限问题

问题背景

在Ubuntu 20.04服务器部署Wiki.js,按常规部署流程操作后,root用户执行node server可正常连接PostgreSQL数据库,但切换到wikijs、nobody等非root用户执行相同命令时,无法建立数据库连接。

症状截图

  • wikijs用户运行node server报错:wikijs用户运行报错
  • root用户运行node server正常:root用户运行正常

实操解决步骤

1. 进入PostgreSQL命令行

切换到系统postgres用户,启动psql:

sudo su - postgres
psql

2. 确认目标数据库与用户

先查看当前PostgreSQL中的用户和数据库列表,确认Wiki.js使用的数据库(假设为wikijs)和对应用户(假设为wikijs):

-- 列出所有数据库用户及权限
\du
-- 列出所有数据库
\l

3. 授予数据库访问权限

执行以下SQL命令,为目标用户授予Wiki.js数据库的必要权限:

-- 授予连接数据库权限
GRANT CONNECT ON DATABASE wikijs TO wikijs;
-- 授予public schema下所有表的读写权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO wikijs;
-- 授予序列权限(避免自增字段操作报错)
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO wikijs;
-- 授予函数权限
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO wikijs;

如果需要更精细的权限控制,可将ALL PRIVILEGES替换为SELECT, INSERT, UPDATE, DELETE等具体权限。执行完成后输入\q退出psql。

4. 调整PostgreSQL访问控制配置

修改pg_hba.conf文件,确保非root用户可以通过本地连接访问数据库:

# 定位pg_hba.conf路径(版本号可能不同,比如12或14)
sudo find / -name pg_hba.conf
# 编辑配置文件
sudo nano /etc/postgresql/12/main/pg_hba.conf

找到本地连接相关的配置段,添加或修改如下行(替换为你的数据库和用户名):

local   wikijs   wikijs   md5

保存后重启PostgreSQL服务生效:

sudo systemctl restart postgresql

5. 验证Wiki.js配置文件

确保Wiki.js的config.yml中数据库配置的用户名与你授权的用户一致,示例配置:

db:
  type: postgres
  host: localhost
  port: 5432
  user: wikijs
  pass: your_database_password
  db: wikijs
  ssl: false

6. 测试连接

切换到wikijs用户,重新运行Wiki.js服务测试:

sudo su - wikijs
cd /path/to/your/wiki.js/directory
node server

内容的提问来源于stack exchange,提问作者Conkel Conkel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:53:09