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

M1 Mac上Homebrew安装的PostgreSQL无法启动问题排查

PostgreSQL启动失败问题排查(M1 Mac)

问题描述

在M1 Mac上执行brew services start postgresql启动PostgreSQL,但brew services list显示状态为error,日志内容如下:

2023-03-30 20:58:29.938 EDT [7593] LOG: database system is shut down
2023-03-30 20:58:39.988 EDT [7608] LOG: starting PostgreSQL 14.7 (Homebrew) on aarch64-apple-darwin22.1.0, compiled by Apple clang version 14.0.0 (clang-1400.0.29.202), 64-bit
2023-03-30 20:58:39.990 EDT [7608] LOG: listening on IPv6 address "::1", port 5432
2023-03-30 20:58:39.990 EDT [7608] LOG: listening on IPv4 address "127.0.0.1", port 5432
2023-03-30 20:58:39.990 EDT [7608] LOG: could not bind Unix address "/tmp/.s.PGSQL.5432": Address already in use
2023-03-30 20:58:39.990 EDT [7608] HINT: Is another postmaster already running on port 5432?
2023-03-30 20:58:39.990 EDT [7608] WARNING: could not create Unix-domain socket in directory "/tmp"
2023-03-30 20:58:39.990 EDT [7608] FATAL: could not create any Unix-domain sockets
2023-03-30 20:58:39.991 EDT [7608] LOG: database system is shut down

已执行的排查操作:

  • 删除/tmp/.s.PGSQL.5432.lock锁文件
  • 通过sudo lsof -i :5432确认5432端口无进程占用
  • 执行sudo killall postgres命令

疑问

  1. 为何brew services会提示“地址已被占用”?
  2. 为何无法在/tmp目录创建Unix-domain socket?

解决方案与解释

关于“地址已被占用”的原因

lsof -i :5432仅检查TCP端口的占用情况,但PostgreSQL报错的是Unix域套接字文件被占用,不是TCP端口。即便删除了锁文件,异常退出的PostgreSQL可能残留了/tmp/.s.PGSQL.5432这个实际的套接字节点文件,系统会判定该“地址”已被占用。

执行以下命令检查并清理:

ls -la /tmp/.s.PGSQL.5432
rm -f /tmp/.s.PGSQL.5432

关于无法在/tmp创建Unix-domain socket的原因

主要有两种可能:

  1. /tmp目录权限异常:正常情况下/tmp的权限应为drwxrwxrwt,执行ls -ld /tmp确认权限。若权限不符,执行以下命令修复:
    sudo chmod 1777 /tmp
    
  2. 系统或安全软件限制:macOS的系统完整性保护(SIP)、隐私设置或第三方安全软件可能阻止PostgreSQL在/tmp创建文件。可尝试修改PostgreSQL的套接字目录到用户专属目录:
    • 编辑PostgreSQL配置文件(通常路径为/usr/local/var/postgres/postgresql.conf)
    • 找到unix_socket_directories配置项,修改为用户有权限的目录,例如:
      unix_socket_directories = '/Users/你的用户名/tmp'
      
    • 创建该目录并设置权限:
      mkdir -p ~/tmp
      chmod 700 ~/tmp
      
    • 重启PostgreSQL:
      brew services restart postgresql
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:03:17