PostgreSQL 12在macOS Catalina安装报错:已有服务器运行,如何解决?
解决macOS Catalina 10.15.6安装PostgreSQL 12时“已有服务器运行”的错误
我来帮你搞定这个问题,这个错误提示完全准确——你的Mac上确实已经有PostgreSQL实例在占用默认的5432端口了,下面分两种常见场景给你对应的解决方案:
第一步:先确认运行中的PostgreSQL进程
先打开终端,输入以下命令来检查是否真的有PostgreSQL进程在后台运行:
ps aux | grep postgres
如果输出结果里除了最后一行grep --color=auto postgres之外还有其他条目,就说明确实有PostgreSQL服务在运行,接下来看你的需求选解决方案。
另外也可以直接检查默认端口5432是否被占用:
lsof -i :5432
如果有输出,就证明这个端口已经被现有PostgreSQL服务占用了。
场景1:不需要同时运行多个服务,停止现有服务后继续安装
如果你只需要安装PostgreSQL 12,不需要保留正在运行的旧服务,可以按以下步骤停止它:
- 如果之前是用Homebrew安装的PostgreSQL,直接用这条命令停止服务:
brew services stop postgresql - 如果是通过官方安装包或者其他方式安装的,先找到服务名:
然后用服务名停止服务:launchctl list | grep postgreslaunchctl stop [找到的服务名] - 如果上面的方法都不管用,直接杀掉进程:在
ps aux | grep postgres的结果里,找到进程ID(第二列的数字),然后执行:
要是进程无法正常终止,加kill [进程ID]-9强制杀掉:kill -9 [进程ID]
停止服务后,重新运行PostgreSQL 12的安装程序,应该就能顺利完成了。
场景2:需要同时运行多个PostgreSQL服务,修改新安装的端口
如果你想要保留现有服务,同时安装并运行PostgreSQL 12,只需要修改新版本的端口即可:
- 如果安装程序还没完成,回到安装步骤,找“端口设置”相关的选项,把默认的5432改成其他未被占用的端口(比如5433、5434都可以),然后继续安装。
- 如果已经安装到一半出错了,找到PostgreSQL 12的安装目录(默认路径是
/Library/PostgreSQL/12/),进入data文件夹,找到postgresql.conf文件,用文本编辑器打开它,找到这一行:
把它改成你想要的端口,比如:port = 5432
保存文件后,启动PostgreSQL 12的服务,以后连接这个新版本的时候需要指定端口,比如:port = 5433psql -p 5433 -U postgres
内容的提问来源于stack exchange,提问作者Trinh
相关产品推荐
相关产品推荐

