Mac M1卸载Postgres后是否需要删除残留的psql客户端?
问题解答
1. psql未随服务端卸载属于正常现象
homebrew 中的 PostgreSQL 服务端包(postgresql、postgresql@xx版本包)和客户端工具包是分离的,你当前看到的psql来自独立的libpq包,这是 PostgreSQL 的官方C客户端库,包含psql、pg_dump等常用客户端工具,常作为其他依赖PostgreSQL连接能力的软件(如编程语言的PG驱动、数据库管理工具)的依赖项安装,卸载服务端包时不会自动移除libpq,因此该现象完全正常。
2. 14版本psql客户端的处理建议
- 优先保留:高版本psql对低版本PostgreSQL服务端有完备的向下兼容性,14版本的psql可以正常连接13版本的PostgreSQL服务端,不会影响正常使用,无需强制删除。
- 如需移除:先执行
brew uses --installed libpq检查是否有其他已安装的软件依赖libpq,如果无依赖可以直接执行brew uninstall libpq完成移除;如果存在依赖但你仍希望默认使用13版本的psql,可在后续安装PostgreSQL13后,将其bin路径添加到shell配置文件的PATH最前面即可,示例如下(针对zsh):
echo 'export PATH="/opt/homebrew/opt/postgresql@13/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
3. 需补充的清理操作,避免影响后续安装
- 清理残留数据目录与启动项
执行以下命令移除旧版本PostgreSQL的残留数据、开机启动配置:# 停止所有旧的PostgreSQL开机启动项 launchctl list | grep postgresql | awk '{print $3}' | xargs -I {} launchctl unload ~/Library/LaunchAgents/{} 2>/dev/null # 删除启动项配置文件 rm -f ~/Library/LaunchAgents/homebrew.mxcl.postgresql*.plist # 删除残留数据目录 rm -rf /opt/homebrew/var/postgres* rm -rf ~/Library/Application\ Support/Postgres/ # 删除临时socket文件 rm -f /tmp/.s.PGSQL.5432* - 清理环境变量配置
检查~/.zshrc、~/.zprofile、~/.bash_profile等shell配置文件,删除其中的PGPORT、PGDATA等PostgreSQL相关的环境变量配置,以及旧版本PostgreSQL的PATH配置项。 - 清理Homebrew缓存
执行brew cleanup清除旧的安装包缓存,避免后续安装时调用旧的缓存包。 - Docker相关注意事项
Docker内的PostgreSQL镜像和容器不会影响本地非Docker环境的PostgreSQL运行,只需在安装和启动本地PostgreSQL13前,停止占用5432端口的Docker PostgreSQL容器即可,无需删除镜像。
4. 安装后的验证步骤
安装PostgreSQL13并启动服务后,执行以下命令确认安装正确:
# 确认服务端版本为13.x postgres --version # 确认默认调用的psql路径属于postgresql@13包 which psql # 连接默认数据库测试 psql postgres -c "SELECT version();"
内容的提问来源于stack exchange,提问作者kokserek
相关产品推荐
相关产品推荐

