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 comandops 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.
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
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
initdb /usr/local/var/postgres -E utf8
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"
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
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
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.
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.
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.
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.
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
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.
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
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.plistPara 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
Variação desta resposta: https://stackoverflow.com/a/13103603/2394728
initdb `brew --prefix`/var/postgres/data -E utf8`
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.
# 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.
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.
$ brew upgrade postgres
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.
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