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

macOS Big Sur安装PostgreSQL 13.3报错:initdb初始化数据库集群失败

macOS Big Sur 下 EDB PostgreSQL 安装 initcluster.sh 执行失败解决方案

你排查的原因完全正确,macOS Big Sur 及以上版本中,系统创建的服务类账户默认禁用交互式登录权限,su - 命令需要加载目标用户的登录shell,因此会执行失败,使用不需要登录shell的 sudo -u 替代是完全正确的修复方向。

方案一:修改安装脚本完成一次性安装

  • 安装程序报出失败提示时,先不要关闭安装向导,保持报错状态
  • 打开终端,切换到 root 权限:sudo su
  • 备份原脚本文件避免操作失误:
cp /Library/PostgreSQL/13/installer/server/initcluster.sh /Library/PostgreSQL/13/installer/server/initcluster.sh.bak
  • 编辑 initcluster.sh 文件,将你定位到的 su - $OSUSERNAME -c "..." 这行代码,替换为以下内容:
sudo -u $OSUSERNAME "$INSTALLDIR/bin/initdb --pwfile $INSTALLDIR/installer/server/initdbpw.$$ --encoding=utf8 -A scram-sha-256 -U \"$SUPERNAME\" -D \"$DATADIR\""
  • 保存修改后回到安装向导,点击「重试」即可继续完成剩余安装流程

方案二:手动初始化集群(适用于已关闭安装向导的场景)

如果已经退出了安装程序,无需重新运行安装包,手动执行初始化操作即可:

  • 执行命令手动初始化数据库集群(以 PostgreSQL 13 版本为例,其他版本替换对应版本号即可):
sudo -u postgres /Library/PostgreSQL/13/bin/initdb --encoding=utf8 -A scram-sha-256 -U postgres -D /Library/PostgreSQL/13/data
  • 初始化过程中会提示设置超级管理员密码,按照提示输入即可
  • 初始化完成后手动启动 PostgreSQL 服务:
sudo -u postgres /Library/PostgreSQL/13/bin/pg_ctl -D /Library/PostgreSQL/13/data start
  • 如需配置开机自启,加载官方提供的启动项配置即可:
sudo launchctl load /Library/LaunchDaemons/com.edb.launchd.postgresql-13.plist

注意事项

  • 不要为 postgres 用户开启交互式登录权限,该账户为专用服务账户,开启登录权限会引入不必要的安全风险
  • 该兼容性问题仅存在于 EDB 提供的 PostgreSQL 13 及更低版本的安装包中,14 及以上版本的官方安装包已经修复了该脚本问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 11:36:03