PostgreSQL服务initdb不起作用

我在我的Fedora 16上安装了PostgreSQL 9.1.2,使用类似于这里提到的方法,并对其进行了testing,这意味着我的安装工作正常。

但是当我这样做: service postgresql initdb甚至service postgresql-9.0 initdb我得到的错误:

 Redirecting to /bin/systemctl initdb postgresql.service Unknown operation initdb 

正因为如此,我也无法启动pgAdmin3。

我错过了什么?

在postgres已被转换为使用本地systemd单元的系统上,你需要使用postgresql-setuppostgresql-setup initdb类的initdb 。 所以你想要的是:

 postgresql-setup initdb 

您需要使用以下命令启动postgresql服务:

 service postgresql start 

只有当你需要初始化数据库服务器的数据目录时, initdb工具才会被使用,当你使用像yum上的yum或Ubuntu上的apt-get一样的软件包pipe理器来安装postgresql服务器时,这应该是自动完成的。

您可以按照您提供的链接中的说明使用它:

 initdb -D /usr/local/pgsql/data 

以root身份运行“su – postgres -c …”命令

我在这里find了答案: https : //bugzilla.redhat.com/show_bug.cgi?id = 771496

问题描述:在初始安装postgresql服务器rpm之后,您将剩下一个无法启动的服务,直到以root身份运行以下命令

su – postgres -c“initdb -D / var / lib / pgsql / data”

版本 – 所选组件的发布号码(如果适用):

[root @ oscar]#rpm -q postgresql-server postgresql-server-9.1.2-1.fc16.x86_64

如何重现:总是

背景故事

有几个地方指示我在Fedora 16中使用这个命令,而不是遵循前面的指令(新命令:su – postgres -c“PGDATA = / var / lib / pgsql / data initdb”),但是在看到“su”在那个前面,我假设它会在我运行命令时将我切换到root。 它不停地提示我input密码,但没有任何工作。

我尝试了root passwd,我自己的(如sudo'ing),“postgres”和“pgsql”,以防我以某种方式被认为是postgres用户,甚至把密码留空。 我尝试su'ing根,然后运行命令没有最初的'su – '(以“postgres -c …”开始),但也是错误的,告诉我:

“服务器必须在无特权的用户标识下启动,以防止可能的系统安全危害。有关如何正确启动服务器的更多信息,请参阅文档。

最后,我试着运行完整的命令“su – postgres -c …”作为根目录,但是仍然使用“su”,哇,它工作。 现在服务启动。 感谢Redhat错误跟踪!

概要

su到root,然后input:

su – postgres -c“PGDATA = / var / lib / pgsql / data initdb”

这个答案稍晚,但可能对那里的人有帮助…在Fedora 18上,使用postgresql 9.2,我最终不得不将/usr/pgsql-9.2/bin添加到我的shell中的PATH中,然后从那里我必须运行:

 postgresql92-setup initdb 

以获取configuration文件和/var/lib/pgsql/9.2/data中的所有内容。 希望这对其他人有帮助!