如何在 Mac 上卸载 Postgres.app
Postgres.app 在你的 Mac 上跑 PostgreSQL 服务器,每个服务器的数据库都放在一个数据目录里,默认位于 ~/Library/Application Support/Postgres,每个 PostgreSQL 大版本一个 var-XX 文件夹。移除应用不会动它们,删掉这个文件夹就是把里面所有数据库一起删掉,所以动手之前先用 pg_dump 把要留的数据备份出来。下面覆盖从 postgresapp.com 下载的 Postgres.app 和 Homebrew cask postgres-app 两种安装方式,用 Homebrew formula、MacPorts 或 EnterpriseDB 安装器装的 PostgreSQL 是另一套安装,不在这里。
先备份数据库
Postgres.app 的文档要求卸载前先用 pg_dump 备份数据。命令行工具装在应用里面,所以备份要趁 Postgres.app 还在、装着这个数据库的服务器还在运行时做,把下面两处 DBNAME 都换成数据库名:
/Applications/Postgres.app/Contents/Versions/latest/bin/pg_dump DBNAME > DBNAME.sql
导出的文件写在终端当前所在的文件夹,要留几个数据库就跑几次,移除任何东西之前先用 ls -l DBNAME.sql 确认文件在、而且不是空的。
打算以后重装 Postgres.app 的话,也可以让数据目录原地留着,下面的卸载步骤里删除它本来就是可选的。
退出 Postgres.app,移除应用
Postgres.app 的安装与卸载页面给的步骤是这样:
- 退出 Postgres.app,菜单栏有它的图标就从那里退出,再把它从「应用程序」拖进废纸篓。
- 可选:删掉数据目录,默认在
~/Library/Application Support/Postgres,只在做完上面的备份、或者确定里面的数据库都不要了之后再删。 - 可选:用
defaults delete com.postgresapp.Postgres2删掉 Postgres.app 的偏好设置。 - 如果你把命令行工具加进过
$PATH,可选用sudo rm /etc/paths.d/postgresapp去掉这项设置,先用下一节里的ls那一行确认,文件不存在就跳过这一步。
退出之后在「活动监视器」里搜 postgres,还有名为 postgres 或 postmaster 的进程,说明服务器还在跑。再看一眼 PostgresMenuHelper,这次测试里 Postgres.app 已经退出,它的菜单栏助手还在运行。
测试时 Postgres.app 首次启动注册了一个登录助手 com.postgresapp.Postgres2LoginHelper,应用移除后它也跟着消失了,要是「系统设置 › 通用 › 登录项与扩展」里还有 Postgres 的条目,在这里关掉。
Postgres.app 的文件在哪里
| 位置 | 里面是什么 | 怎么处理 |
|---|---|---|
~/Library/Application Support/Postgres |
数据目录,每个大版本一个 var-XX 文件夹,也就是你的数据库 |
先备份,确定里面的数据库都不要了再删 |
~/Library/Preferences/com.postgresapp.Postgres2.plist |
应用偏好设置 | 随应用移除 |
~/Library/Caches/com.postgresapp.Postgres2、~/Library/Cookies/com.postgresapp.Postgres2.binarycookies |
缓存和 Cookie | 随应用移除 |
/etc/paths.d/postgresapp |
把命令行工具加进 $PATH,只有你设置过才有 |
应用移除后再删 |
这是默认的数据位置,你让某个服务器用了别的文件夹的话,它的数据就在那个文件夹里。数据目录和 $PATH 的位置来自 Postgres.app 的文档,缓存和 Cookie 来自 Homebrew cask 的 zap 清单。
检查结果
在「终端」里运行下面几条只读命令:
pgrep -il postgres
launchctl list | grep -i postgresapp
ls "$HOME/Library/Application Support/Postgres"
ls -l /etc/paths.d/postgresapp
pgrep没有输出,说明没有名字带 postgres 的进程在跑,列出postgres进程说明还有服务器开着,可能来自 Postgres.app,也可能来自另一套 PostgreSQL,列出PostgresMenuHelper说明菜单栏助手还开着,删数据之前先把它们退出。launchctl list没有输出,说明登录助手没有加载,出现com.postgresapp.Postgres2LoginHelper说明它还登记着,到「登录项与扩展」里关掉。- 对 Postgres 文件夹运行
ls会列出还在的var-XX数据目录,你留着数据库时这是正常结果,提示「No such file or directory」说明文件夹已经不在。 ls -l /etc/paths.d/postgresapp打印出文件,说明$PATH设置还在,提示「No such file or directory」说明从没加过或者已经删掉。
用 Homebrew 安装时
postgres-app 这个 cask 卸载时会卸下登录助手 com.postgresapp.Postgres2LoginHelper,并退出 Postgres.app 和它的菜单栏助手。它的 zap 清单包括装着你数据库的 ~/Library/Application Support/Postgres,还有缓存、Cookie 和偏好设置,自己运行 brew uninstall --cask --zap postgres-app 会把数据目录移进废纸篓,不看你在 Mole 里勾了什么。Homebrew 的 Postgres.app cask
想保留数据库,先备份,或者只移除应用:
brew uninstall --cask postgres-app
只有 zap 清单里的每一项都在你自己的 ~/Library 里、没有碰到你没勾的行、也没有被其他已装应用认领时,Mole 才会加上 --zap。Application Support/Postgres 默认不勾选,你不勾它,Mole 卸载时就不带 --zap,只移走应用和你勾选的行。
Mole 会列出什么
用 Mole 卸载 Postgres.app 时:
~/Library/Application Support/Postgres会列出,但默认不勾选,你不勾,数据库就留着。com.postgresapp.Postgres2偏好设置文件,以及应用和它的菜单栏助手com.postgresapp.Postgres2MenuHelper在用户临时目录里的缓存,默认勾选。/etc/paths.d/postgresapp不会列出。- 你用
brew services跑的 PostgreSQL,它的启动任务不会被列出,也不会被卸下,哪怕名字里同样带着 postgres。
这次检查覆盖了什么
2026 年 9 月 25 日,从官方发布页下载 Postgres.app 2.9.6,校验和与 Homebrew cask 一致,拷进「应用程序」后打开一次,没有初始化数据库,再用 Mole 的开发构建卸载,列出的行全部勾上。1.84 GB 的应用、空的 ~/Library/Application Support/Postgres、偏好设置文件和一个临时缓存进了废纸篓,登录助手之后也不在了。随后重新扫描,发现菜单栏助手的临时缓存还在磁盘上,当天 Mole 改成会列出这个助手的文件,第二次卸载把它移走了。测试时没有建数据库,所以说明不了数据会被保留还是移走,$PATH 设置和 Homebrew cask 都没有测试。
