Como configurar o banco de dados no postgresql 9.2.4 em 12.04.2 LTS

1

Eu acho que o PostgreSQL está sendo executado corretamente na minha caixa: Eu tenho um PID e vejo que o postgres está "escutando" na porta 5432.

Estou tentando criar um banco de dados para experimentar, usando o banco de dados "Book" descrito no livro de C. Fehily "Visual Quickstart SQL".

Eu tentei várias abordagens, mas não tive alegria. A abordagem mais recente é:

$ su postgres
Password: 
postgres@piglet:/etc$ createdb books
createdb: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
postgres@piglet:/etc$ 

Não tenho certeza se estou atingindo as senhas ou autorizações ou algo mais. Eu certamente gostaria de receber algumas sugestões. Obrigado antecipadamente!

    
por Red Spanner 04.05.2013 / 00:14

1 resposta

2

Se o PostgreSQL estiver rodando e ouvindo na porta 5432 de acordo com netstat , mas quando você executar psql você recebe um erro como:

psql: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

então, o mais provável é que você esteja usando o psql de uma versão anterior do PostgreSQL que também está instalada no seu sistema. Esta versão provavelmente está configurada para usar um unix_socket_directory diferente.

A melhor opção é definir sua variável de ambiente PATH para apontar para o diretório que contém as versões corretas de psql , createdb , etc antes dos antigos.

Como alternativa, você pode usar conexões TCP / IP especificando explicitamente -h localhost , por exemplo:

psql -h localhost ...

(e, portanto, createdb -h localhost ... ). Isso resultará na utilização de versões antigas dos comandos createdb , psql , etc, portanto, é melhor definir apenas o PATH . O mesmo vale para usar -h para definir o caminho do soquete unix, que é uma opção avançada.

Corrija sua variável de ambiente PATH e tudo ficará bem. Você pode testar isso temporariamente com algo como o seguinte, em que você substitui /usr/pgsql-9.2/bin pelo diretório bin em sua instalação do PostgreSQL 9.2:

export PATH=/usr/pgsql-9.2/bin:$PATH
psql

Se isso funcionar, você precisará tornar a alteração permanente editando /etc/environment , seu .bash_profile ou outros arquivos de configurações apropriados. Procure por "ubuntu permanentemente definido PATH" para mais informações.

    
por Craig Ringer 04.05.2013 / 14:30