Como iniciar o servidor de PostgreSQL no Mac OS X?

ÚLTIMA ACTUALIZAÇÃO:

Tinha-me esquecido de executar o comando initdb.

< / ACTUALIZAÇÃO FINAL>

Executando este comando
ps auxwww | grep postgres

vejo que o postgres não está a funcionar

> ps auxwww | grep postgres
remcat          1789   0.0  0.0  2434892    480 s000  R+   11:28PM   0:00.00 grep postgres
Isto levanta a questão: Como começo o servidor postgresql?

actualização:

>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory

actualização 2:

o toque não foi bem sucedido então eu fiz isto em vez disso:

> mkdir /usr/local/var/postgres
> vi /usr/local/var/postgres/server.log
> ls /usr/local/var/postgres/          
server.log
Mas quando tento iniciar o servidor rails, continuo a ver isto:
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?

actualização 3:

> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running

actualização 4:

Descobri que não havia pg_hba.conf (apenas pg_hba.conf.sample) so I modified the sample and renamed it (to remover the .exemplo). Aqui estão os conteúdos:

 # IPv4 local connections:
 host    all             all             127.0.0.1/32           trust
 # IPv6 local connections:
 host    all             all             ::1/128                trust
Mas não entendo isto.
> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start     
server starting
> pg_ctl -D /usr/local/var/postgres status                                     
pg_ctl: no server running

Também

sudo find / -name postgresql.conf
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory

actualização 5:

sudo pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Password:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.

actualização 6:

Isto parece estranho.
> egrep 'listen|port' /usr/local/var/postgres/postgresql.conf
egrep: /usr/local/var/postgres/postgresql.conf: No such file or directory
Mas eu fiz isto.
>sudo find / -name "*postgresql.conf*"
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
/usr/share/postgresql/postgresql.conf.sample

Então eu fiz isto:

egrep 'listen|port' /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample 
#listen_addresses = 'localhost'     # what IP address(es) to listen on;
#port = 5432                # (change requires restart)
                # supported by the operating system:
                #   %r = remote host and port
Então tentei isto:
> cp /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf        
> cp /usr/share/postgresql/postgresql.conf.sample /usr/share/postgresql/postgresql.conf 
O servidor está a funcionar?" mensagem.

Author: Ramy, 2011-11-02

20 answers

O Homebrew inclui listas de lançamento para iniciar automaticamente. Para mais informações, execute brew info postgres.

Iniciar manualmente:

pg_ctl -D /usr/local/var/postgres start

Parar manualmente:

pg_ctl -D /usr/local/var/postgres stop

Iniciar automaticamente:

"para que o lançamento Inicie o postgresql agora e reinicie no arranque:"

brew services start postgresql


Qual é o resultado de pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start? Qual é o resultado de pg_ctl -D /usr/local/var/postgres status?

Há alguma mensagem de erro no servidor.log?

Certifique-se que as ligações localhost tcp estão activas no PG_ HBA.conf:

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

Verifique os endereços e o porto em postgresql.conf:

egrep 'listen|port' /usr/local/var/postgres/postgresql.conf

#listen_addresses = 'localhost'     # what IP address(es) to listen on;
#port = 5432                # (change requires restart)

A limpar

O Postgres foi provavelmente instalado via Homebrew, Fink, MacPorts ou o instaladorempreendedor.

Verifique o resultado dos seguintes comandos para determinar com que Gestor de pacotes foi instalado:

brew && brew list|grep postgres
fink && fink list|grep postgres
port && port installed|grep postgres
 1483
Author: jamesallman, 2017-12-04 17:28:40

Se quiser iniciar e parar manualmente o postgresql (instalado através do homebrew), a maneira mais fácil é:

brew services start postgresql

E

brew services stop postgresql
 280
Author: malopezcruz, 2014-06-16 20:18:09
Eu tinha quase o mesmo problema, e você citou o comando initdb como sendo a solução. Esta também foi a solução para mim, mas eu não vi ninguém postá-lo aqui, então para aqueles que estão procurando por ele:
initdb /usr/local/var/postgres -E utf8
 168
Author: Yan, 2012-10-27 19:49:28

Outra abordagem é usar a gema lunchy (um invólucro para o launchctl):

brew install postgresql
initdb /usr/local/var/postgres -E utf8
gem install lunchy

Para iniciar postgres:

lunchy start postgres

Para parar os postgres:

lunchy stop postgres

Para mais informações, consulte: " Como instalar o PostgreSQL num Mac com o Homebrew e o Lunchy"

 78
Author: pisaruk, 2017-11-23 18:01:47
Aqui estão os meus 2 cêntimos: fiz um nome falso para postgres pg_ctl e coloquei-o.bash_profile (a minha versão postgresql é 9.2.4, e o caminho do banco de dados é /Library/PostgreSQL/9.2/data).
alias postgres.server="sudo -u postgres pg_ctl -D /Library/PostgreSQL/9.2/data"
Lançar novo terminal. E depois? Você pode iniciar/parar o seu servidor de postgresql com isto:
postgres.server start
postgres.server stop
 69
Author: Kenial, 2016-04-02 19:00:33

Se o seu computador foi reiniciado abruptamente

Primeiro, você tem que apagar o arquivo {[[0]} então você pode reiniciar o serviço usando um dos muitos outros métodos mencionados, dependendo de sua instalação.

Você pode verificar isso olhando para os registros de Postgres para ver o que pode estar acontecendo.: tail -f /usr/local/var/postgres/server.log
 64
Author: rafaelportela, 2017-04-14 16:12:17

A forma mais limpa de longe para iniciar/parar/reiniciar o postgres se o tiver instalado através de brew é simplesmente descarregar e/ou carregar o ficheiro de configuração do launchd que vem com a instalação:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

A primeira linha vai parar postgres e a segunda linha vai começar. Não é necessário especificar quaisquer pastas de dados, etc. já que está tudo nesse ficheiro.

 33
Author: Markus Amalthea Magnuson, 2015-05-20 11:49:31

Para iniciar o servidor de postgresql:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Para terminar o servidor de postgresql:

pg_ctl -D /usr/local/var/postgres stop -s -m fast

Também pode criar um nome alternativo através do CLI para facilitar:

alias pg-start='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
alias pg-stop='pg_ctl -D /usr/local/var/postgres stop -s -m fast'
Com isto, basta escrever "pg-start" para iniciar Postgres e "pg-stop" para desligá-lo.
 27
Author: Todd, 2013-06-27 13:55:13

Para efeitos de teste, acho que o aplicativo PostgreSQL é a melhor opção!

Execute um aplicativo, e o servidor está pronto e em execução. Fecha a aplicação, e o servidor vai abaixo.

Http://postgresapp.com/

 21
Author: Crystian Leão, 2013-04-10 20:12:34

Quando instala o postgresql usando o homebrew:

brew install postgres

No final do resultado, irá ver estes métodos para iniciar o servidor:

To have launchd start postgresql at login:
    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
    postgres -D /usr/local/var/postgres
Acho que esta é a melhor maneira. Pode adicionar um nome falso ao seu .perfil por conveniência.
 9
Author: jkaluzka, 2014-05-13 10:23:29

Para uma base de dados de testes descartável, pode executar o servidor em primeiro plano.

Inicializar uma nova base de dados postgres numa nova pasta

mkdir db
initdb db -E utf8
createdb public

Iniciar o servidor em primeiro plano (ctrl-C para parar o servidor)

postgres -d db

Noutra sessão de consola, ligue-se ao servidor

psql -d public
 7
Author: k107, 2015-05-07 16:38:16

Eu Tenho o mesmo problema e executar todas as atualizações do primeiro post. Mas depois de verificar o ficheiro de Registo:

/usr/local/var/postgres/server.log

Vejo a verdadeira causa:

FATAL:  data directory "/usr/local/var/postgres" has group or world access
DETAIL:  Permissions should be u=rwx (0700).

Após alteração da autorização nesta pasta

chmod 0700 /usr/local/var/postgres

O servidor de Postgres começou.

Verifica sempre o ficheiro de Registo.

 7
Author: Roosh, 2016-03-09 08:39:35

Para fins de desenvolvimento, uma das formas mais simples é instalar Postgres.app from the official site . Pode ser iniciado/parado na pasta de aplicações ou usando os seguintes comandos no terminal:

# start
open -a Postgres

# stop
killall Postgres
killall postgres
 4
Author: Melnosta, 2013-10-20 20:29:42

O PostgreSQL está integrado no servidor .app disponível através da loja de App em Mountain Lion. Isso significa que ele já está configurado, e você só precisa lançá-lo, e então criar usuários e bancos de dados.

Dica : não comece por definir $PGDATA e assim por diante, tome as localizações dos ficheiros como estão.

Você teria este arquivo.: /Library/Server/PostgreSQL/Config / org.postgresql.postgres.plist

Para começar:

sudo serveradmin start postgres

Processo iniciado com argumentos:

/ Applications / Server.app/Conteúdo/ServerRoot/usr/bin/postgres_real -D /Biblioteca/Server/PostgreSQL/Dados -c listen_addresses=127.0.0.1,::1 -c log_connections=a-c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL.log -c log_line_prefix=%t -c log_lock_waits=a-c log_statement=ddl -c logging_collector=a-c unix_socket_directory=/private/var/pgsql_socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770

Podes. sudo:

sudo -u _postgres psql template1

Ou ligar:

psql -h localhost -U _postgres postgres

Você pode encontrar a pasta de dados, a versão, o estado de execução e assim por diante com

sudo serveradmin fullstatus postgres  
 4
Author: datasmid, 2013-11-24 00:58:26

Variação desta resposta: https://stackoverflow.com/a/13103603/2394728

initdb `brew --prefix`/var/postgres/data -E utf8`
 4
Author: substancejoy, 2017-05-23 12:34:45

Nenhuma das respostas acima corrigiu o problema para mim apesar de receber as mesmas mensagens de erro. Consegui recuperar a instância, apagando o correio existente.ficheiro pid que estava bloqueado e não permitia ligações.

 1
Author: Swedendrift, 2017-01-04 10:03:17
   # remove old database files (If there was any)
   $rm -rf /usr/local/var/postgres    # install the binary

    $ brew install postgresql

    # init it
    $ initdb /usr/local/var/postgres

    # start the postgres server
    $ postgres -D /usr/local/var/postgres

    # create your database
    $ createdb mydb


    # Access db.
    $ psql mydb
    psql (9.0.1)
    Type "help" for help.
 1
Author: zee, 2018-01-21 23:41:49

Para o Mac / OSX, eu gosto muito de LaunchRocket para este e outros serviços de fundo que usei no desenvolvimento.

Https://github.com/jimbojsb/launchrocket

Este local tem boas instruções de instalação.: http://macappstore.org/launchrocket/

Isto dá-lhe uma bela tela nas preferências do seu sistema que lhe permite lançar, reiniciar, root, lançar no início.

 0
Author: theUtherSide, 2016-10-20 02:38:50

$ brew upgrade postgres

Arranjei-o para mim.

Isso, claro, irá actualizar a sua versão postgres e actualizar/instalar quaisquer dependências. atenção: faça isto sabendo que a sua versão postgresql irá provavelmente mudar.Para mim, não foi nada de mais.

 0
Author: thedanotto, 2016-12-29 18:43:20

Para o macports, basta usar o comando carregar / descarregar e o nome do porto do servidor em execução:

sudo port load postgresql96-server
- or -
sudo port unload postgresql96-server
Então, não tens de te lembrar onde está o ficheiro /Library/LaunchDaemons/org.macports.postgresql96.plist
 0
Author: Steve, 2018-08-17 03:28:20