Em sistemas nos quais o postgres foi convertido para usar uma unidade systemd
nativa, você precisa usar postgresql-setup
para itens como initdb
. Então o que você quer é:
postgresql-setup initdb
Eu instalei o PostgreSQL 9.1.2 no meu fedora 16 em um método semelhante ao mencionado aqui , e testei, o que significa que minha instalação está funcionando bem.
Mas quando faço isso: service postgresql initdb
ou mesmo service postgresql-9.0 initdb
recebo o erro:
Redirecting to /bin/systemctl initdb postgresql.service
Unknown operation initdb
E por causa disso, não consigo iniciar o pgAdmin3 também.
O que estou perdendo?
Em sistemas nos quais o postgres foi convertido para usar uma unidade systemd
nativa, você precisa usar postgresql-setup
para itens como initdb
. Então o que você quer é:
postgresql-setup initdb
Execute o comando "su-postgres -c ..." como raiz
Encontrei a resposta aqui: link
Description of problem: After initial install of a postgresql server rpm, you are left with an unstartable service until you run the following command as root
su - postgres -c "initdb -D /var/lib/pgsql/data"
Version-Release number of selected component (if applicable):
[root@oscar]# rpm -q postgresql-server postgresql-server-9.1.2-1.fc16.x86_64
How reproducible: Always
Vários lugares me instruíram a usar este comando para o Fedora 16, em vez de seguir as instruções anteriores (novo comando: su-postgres -c "PGDATA = / var / lib / pgsql / data initdb"), mas ao ver ' su 'na frente do que, eu assumi que iria me mudar para root quando eu corri o comando. Ele continuou me pedindo uma senha, mas nada estava funcionando.
Eu tentei o root passwd, meu próprio (como se sudo'ing), "postgres" e "pgsql" no caso de eu estar de alguma forma supostamente fazendo isso como o usuário postgres, mesmo deixando a senha em branco. Eu tentei su'ing para root e, em seguida, executando o comando sem o inicial 'su -' (começando com "postgres-c ..."), mas isso também foi um erro, dizendo-me que:
"The server must be started under an unprivileged user ID to prevent possible system security compromise. See the documentation for more information on how to properly start the server."
Finalmente, eu tentei executar o comando completo "su-postgres -c ..." como root, mas ainda usando o "su", e wow- funcionou. Agora o serviço é iniciado. Obrigado Redhat bug tracking!
su para root e, em seguida, insira:
su - postgres -c "PGDATA=/var/lib/pgsql/data initdb"
Você precisa iniciar o serviço postgresql usando o comando:
service postgresql start
A ferramenta initdb
deve ser usada somente quando você precisar inicializar o diretório de dados do servidor de banco de dados, e isso deve ser feito automaticamente quando você instalar o servidor postgresql usando um gerenciador de pacotes como yum
on centos ou apt-get
no Ubuntu.
Você pode usá-lo conforme indicado no link fornecido como:
initdb -D /usr/local/pgsql/data
Isso está respondendo um pouco tarde, mas pode ser útil para alguém lá fora ... No Fedora 18, com o postgresql 9.2, acabei tendo que adicionar /usr/pgsql-9.2/bin ao meu PATH no meu shell, e de lá eu tive que correr:
postgresql92-setup initdb
para obter os arquivos de configuração e tudo mais em /var/lib/pgsql/9.2/data. Espero que seja útil para alguém lá fora!
Tags postgresql database