No Arch Linux, após executar o comando initdb, recebo a seguinte mensagem:
Success. You can now start the database using:
pg_ctl -D /var/lib/postgres/data -l logfile start
Como usuário do postgres, tento começar usando o comando acima e obtenho um erro:
FATAL: could not create lock file "/run/postgresql/.s.PGSQL.5432.lock" no such file or directory
Saio para o usuário postgres e tento iniciar pelo comando acima e obtenho:
pg_ctl: could not open PID file "/var/lib/postgres/data/postmaster.pid" : Permission denied
Então tentei o comando acima executado como sudo:
sudo pg_ctl -D /var/lib/postgres/data -l logfile start
e pegue:
pg_ctl: cannot run as root.
Responder1
Ao iniciar o postgres manualmente, ou seja, sem usar o script de inicialização empacotado, você precisa fazer o que o script faz:
crie o
/run/postgresql
diretório com permissão de gravaçãopostgres
e permissão de leitura para outros./run
normalmente é montado em um disco RAM, então é normal que esteja vazio.executado exclusivamente
pg_ctl
como usuáriopostgres
. Usesudo -u postgres
ifsudo
tem que ser usado para isso.
O primeiro erro que você mencionou foi resolvido pelo nº 1 e os outros dois foram resolvidos pelo nº 2. Ou apenas use o script de inicialização que vem com o pacote do seu sistema operacional, ele está lá para cuidar desses detalhes para que você não precise aprendê-los.
O documento emhttps://wiki.archlinux.org/index.php/PostgreSQLdiz para:
o que significaria systemctl enable postgresql.service
e systemctl start postgresql.service
,em oposiçãopara pg_ctl [...options...] start
.
Responder2
Para constar, quero acrescentar que tive um problema fortemente relacionado agora com o Postgresql 10 no Ubuntu. Na verdade could not open PID file “/var/lib/postgres/data/postmaster.pid”
foi o que me trouxe até aqui. Tentei coisas aprendidas aqui e em outros lugares, sem sucesso, e então recorri à antiga reinicialização. E tudo veio bem. Ah bem. Não posso dizer que aprendi muito, ou que ensina muito, a não ser, lembre-se de tentar reiniciar...