我使用的是 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 ?
我需要安装额外的软件吗?
logfile
不是字面上的意思,它应该替换为PostgreSQL服务器进程有写权限的文件。
通常不会这样做,而是编辑
postgresql.conf
并配置 log_destination
、logging_collector
、log_directory
和 log_filename
。然后您无需使用 -l
选项即可启动 PostgreSQL。
您尝试使用
systemctl
启动 PostgreSQL 可能成功了;你可以检查
systemctl status postgresql-11
所以,我面临着同样的问题。 首先,我使用以下命令检查我的计算机上的所有服务器是否处于活动状态以及哪些服务器处于活动状态:
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
对我来说效果很好! 在此输入图片描述
我认为有一个后台 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
实际上导致错误的问题是你在
initdb
目录中通过/var
启动了postgresql数据库,其中只有root
用户拥有write
权限。您尝试运行的命令实际上尝试在没有权限的/var
目录中生成日志文件,因此您会收到权限被拒绝的错误。
要解决此问题,只需尝试在其他用户也拥有
write
权限的其他目录中启动 postgresql 数据库即可。