📌  相关文章
📜  端口 5432 已在使用 通常这意味着您的 Mac 上已经有一个 PostgreSQL 服务器在运行.如果要同时运行多个服务器,请使用不同的端口. - SQL (1)

📅  最后修改于: 2023-12-03 15:41:06.479000             🧑  作者: Mango

端口 5432 已在使用

当你在 Mac 上尝试启动 PostgreSQL 服务器时,如果控制台输出类似以下的信息:

pg_ctl: could not start server
Examine the log output.
2021-01-01 12:00:00.000 CST [54321] FATAL:  could not bind IPv4 socket: Address already in use
2021-01-01 12:00:00.000 CST [54321] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.

这说明端口 5432 已经被占用,通常这意味着你已经有一个 PostgreSQL 服务器在运行。

如何解决?

如果你只需要一个 PostgreSQL 服务器,那么你可以尝试找到运行中的服务器并停止它,以便你的应用程序能够使用相同的端口。

如果你需要同时运行多个服务器,那么你需要使用不同的端口。你可以通过修改 PostgreSQL 的配置文件 postgresql.conf 来更改默认端口。

postgresql.conf 文件中,你需要修改以下行:

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost', '*' = all
#port = 5432                            # (change requires restart)

如果要同时运行多个 PostgreSQL 服务器,请将 port 参数更改为不同的端口号,例如:

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost', '*' = all
port = 5433                            # (change requires restart)

然后,你可以通过以下命令启动新的 PostgreSQL 服务器:

$ pg_ctl -D /usr/local/var/postgres2 start

其中 -D 参数指定了新的数据库集群的数据目录,在这个例子中是 /usr/local/var/postgres2

现在,你可以使用新的端口号连接到这个服务器了。

结论

在 Mac 上启动 PostgreSQL 服务器时,如果遇到端口占用问题,可以通过找到运行中的服务器并停止它来解决问题,或者使用不同的端口启动新的服务器。修改 postgresql.conf 文件并使用 -D 参数来指定不同的数据目录即可同时运行多个 PostgreSQL 服务器。