我无法启动服务器 PostgreSQL 11:“pg_ctl:无法启动服务器”

问题描述 投票:0回答:5

我使用的是 CentOS Linux 版本 7.5.1804(核心)

当我以

postgres
身份登录并运行时:

bash-4.2$ /usr/pgsql-11/bin/initdb -D /var/lib/pgsql/11/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

creating directory /var/lib/pgsql/11/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /usr/pgsql-11/bin/pg_ctl -D /var/lib/pgsql/11/data -l logfile start

bash-4.2$

然后我就跑了

bash-4.2$ /usr/pgsql-11/bin/pg_ctl start -l logfile -D /var/lib/pgsql/11/data
waiting for server to start..../bin/sh: logfile: Permission denied
 stopped waiting
pg_ctl: could not start server
Examine the log output.
bash-4.2$ date
Wed Oct 24 01:50:44 -05 2018
bash-4.2$

我在 GOOGLE 中搜索“等待服务器启动.../bin/sh: logfile: Permission Denied”,但此错误仅发生在 MAC 中,并且没有显示解决方案...

我也跑步

bash-4.2$ postgres --version;postmaster --version;
postgres (PostgreSQL) 11.0
postgres (PostgreSQL) 11.0
bash-4.2$

然后我相信 PostgreSQL 11 已经安装好了,但是我无法启动服务器。

我用这一行安装:

yum install postgresql-jdbc.noarch postgresql-jdbc-javadoc.noarch postgresql-unit11.x86_64 postgresql-unit11-debuginfo.x86_64 postgresql11.x86_64 postgresql11-contrib.x86_64 postgresql11-debuginfo.x86_64 postgresql11-devel.x86_64 postgresql11-docs.x86_64 postgresql11-libs.x86_64 postgresql11-odbc.x86_64 postgresql11-plperl.x86_64 postgresql11-plpython.x86_64 postgresql11-pltcl.x86_64 postgresql11-server.x86_64 postgresql11-tcl.x86_64 postgresql11-test.x86_64

我没有添加[postgresql11-llvmjit.x86_64],因为这需要很多依赖。

CentOS Linux 版本 7.5.1804 + PostgreSQL 11 ?

我需要安装额外的软件吗?

postgresql centos7 postgresql-11
5个回答
8
投票

logfile
不是字面上的意思,它应该替换为PostgreSQL服务器进程有写权限的文件。

通常不会这样做,而是编辑

postgresql.conf
并配置
log_destination
logging_collector
log_directory
log_filename
。然后您无需使用
-l
选项即可启动 PostgreSQL。

您尝试使用

systemctl
启动 PostgreSQL 可能成功了;你可以检查

systemctl status postgresql-11

8
投票

所以,我面临着同样的问题。 首先,我使用以下命令检查我的计算机上的所有服务器是否处于活动状态以及哪些服务器处于活动状态:

brew services list

然后我有一些服务器处于活动状态,因此我停止了它们,因为您需要停止它们才能使 posgresql 服务器正常工作。

brew services stop < name of the server/s active >

然后我创建了一个新数据库

initdb /usr/local/var/postgres2

并使用

启动服务器
 pg_ctl -D /usr/local/var/postgres2 -l logfile start

对我来说效果很好! 在此输入图片描述


0
投票

我认为有一个后台 postgres 进程正在运行,首先您需要终止该服务。我遇到了同样的问题并通过此命令修复:

sudo /etc/init.d/postgresql stop

或者您可以尝试终止系统监视器中的所有

postgres
命名进程并删除数据库目录中的
postmaster.pid
文件。

然后你可以启动服务器:

sudo -u <your-username> pg_ctl -D <your-database-file-location> start

举个例子:

sudo -u shc /home/shc/postgres-built/bin/pg_ctl -D /home/shc/mydatabase start

完成后,为了不再遇到同样的问题,请停止服务器:

sudo -u <your-username> pg_ctl -D <your-database-file-location> stop

0
投票

实际上导致错误的问题是你在

initdb
目录中通过
/var
启动了postgresql数据库,其中只有
root
用户拥有
write
权限。您尝试运行的命令实际上尝试在没有权限的
/var
目录中生成日志文件,因此您会收到权限被拒绝的错误。

要解决此问题,只需尝试在其他用户也拥有

write
权限的其他目录中启动 postgresql 数据库即可。


0
投票

我通常以管理员模式打开任务管理器并查找已经运行的 PostgreSQL 服务器。终止所有进程。每当我遇到这个问题时,这一直对我有用。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.