Mac运行Docker Compose后pgAdmin 4崩溃无法启动求助
解决Mac上pgAdmin 4崩溃及PostgreSQL端口占用问题
一、停止自动启动的系统PostgreSQL进程
重启后自动占用5432端口的是系统自带或通过brew安装的PostgreSQL服务,按以下步骤彻底停用:
- 先确认进程归属:执行
ps aux | grep postgres,从进程路径判断是brew安装版本还是系统原生版本 - 停止当前运行的进程:
- 若为brew安装:
sudo brew services stop postgresql - 若为系统原生版本:找到对应版本的plist文件(比如PostgreSQL 14的路径是
/Library/LaunchDaemons/com.edb.launchd.postgresql-14.plist),执行sudo launchctl unload /Library/LaunchDaemons/com.edb.launchd.postgresql-XY.plist(将XY替换为你的实际版本号)
- 若为brew安装:
- 禁用自动启动,防止重启后再次占用端口:
- brew安装版本:
sudo brew services disable postgresql - 系统原生版本:
sudo launchctl disable system/com.edb.launchd.postgresql-XY
- brew安装版本:
二、修复pgAdmin 4的段错误崩溃
强制终止本地PostgreSQL进程后,pgAdmin的连接缓存或配置文件可能被损坏,按以下步骤重置:
- 彻底关闭所有pgAdmin相关进程:
sudo killall pgAdmin4 - 删除pgAdmin的配置缓存目录:
rm -rf ~/Library/Application\ Support/pgAdmin/ - 重新启动pgAdmin 4,它会自动生成全新的配置文件
- 如果之前本地PostgreSQL的 data 目录因强制终止损坏,执行
pg_resetwal /usr/local/var/postgres(替换为你的实际data目录路径)修复,再启动本地PostgreSQL即可
三、长期避免端口冲突的方案
修改Docker Compose的端口映射,让容器内的PostgreSQL使用非默认端口对外暴露:
- 打开你的
docker-compose.yml文件,找到postgres服务的ports配置块,修改为:services: postgres: image: postgres:latest ports: - "5433:5432" # 主机端口用5433,容器内部保持默认的5432不变 # 保留其他原有配置 - 后续启动Docker Compose时就不会占用5432端口,本地pgAdmin和PostgreSQL可正常运行,连接容器内数据库时使用端口5433即可
内容的提问来源于stack exchange,提问作者OzanCinci
相关产品推荐
相关产品推荐

