PostgreSQL

Iniciado por yurijivago, 25 de Outubro de 2008, 03:14

tópico anterior - próximo tópico

yurijivago

Olá pessoal, estou abrindo esse tópico pois estava com um problemão pra conseguir configurar o PostgreSQL e nada do que eu encontrava dava jeito pra mim. Portanto, outro dia encontrei a solução, e esta segue aqui em baixo, espero que sirva de ajuda para alguém. Outro motivo de eu criar um novo tópico é que vi que tem muitos, aí se eu fosse de um por um, respondendo, ficava inviável.

Fonte: http://www.projectocolibri.com/e107_plugins/forum/forum_viewtopic.php?1115 em 22/10/2008 às 02:38

O que eu fiz:
Após instalação do PostgreSQL pelo gestor de pacotes.

1. Alterar a password do utilizador postgres.

:~$ sudo su postgres -<enter>
:~$ psql<enter>
Bem vindo ao psql 8.2.6, o terminal iterativo do PostgreSQL.

Digite: \copyright para mostrar termos de distribuição
\h para ajuda com comandos SQL
\? para ajuda com comandos do psql
\g ou terminar com ponto-e-vírgula para executar a consulta
\q para sair

postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD 'asuapassword';<enter>
:~$ exit<enter>
:~$ \q<enter>
:~$ exit<enter>

2. Criar o acesso ao servidor através do pgAdminIII

No menu "Aplicações"-"Ferramentas de Sistema"-"pgAdmin III"
Criar uma nova ligação ao servidor "File"-"Add Server"
Preencher os seguintes campos.

Address=localhost
Description=Colibri
Service=
Port=5432
Maintenance DB=postgres
Username=postgres
Password=asuapassword


Bem pessoal, depois disso é só brincar com o BD. :D
Yuri Jivago.

tfmoraes

yurijivago, eu acho que este seu post merece ir para a seção de dicas e truques.

ferdam

Gostaria de contribuir para este tópico.

Se olharem os dados de conexão do pgadmin vão notar Address=localhost. Se alguém tentar conectar a partir de outra máquina (outro IP) o PostgreSQL não permitirá.

Estes são os passos para conseguir conectar o servidor a partir de outra máquina através do pgadmin ou psql :

sudo su - postgres

Estas alterações farão que o servidor abra sockets TCP/IP que permitem conexões de outras máquinas. Com o parâmetro localhost (default) só serão permitidas conexões internas (no próprio servidor) através de Unix-domain Sockets.

Edite o arquivo postgresql.conf (estou usando a versão 8.3, talvez o caminho para os arquivos, para a sua versão seja um pouco diferente)

vi /etc/postgresql/8.3/main/postgresql.conf

localize a linha

listen_addresses = 'localhost'

se quiser uma lista de máquinas, digite os IPs separados por vírgulas

listen_addresses = '192.168.0.1,192.168.0.2,207.9.123.33'

se quiser liberar a conexão para qualquer IP

listen_addresses = '*'

(eu uso esta forma)
Salve o arquivo.


Agora você precisará configurar como serão a autorização e a autenticação destas conexões.

Edite o arquivo pg_hba.conf

vi /etc/postgresql/8.3/main/pg_hba.conf

localize as linhas :

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


e adicione logo abaixo desta última :

host    all         all         192.168.0.0/24       md5

Salve o arquivo.

Explicando um pouco :

host é para conexões tipo TCP/IP (socket)
all significa que esta conexão dará acesso a todos os databases criados (absolutamente todos !!!)
all qualquer usuário (username)  (absolutamente todos !!!)
192.168.0.0/24 (CIDR-ADDRESS) qualquer host da rede 192.168.0.0
md5 é o método de encriptação usado na codificação das senhas.

Se você ler os comentários do arquivo e a documentação, verá que há uma infinidade de possibilidades de configurações.
Estas configurações acima são muito pouco restritivas e deve-se tomar cuidado em utilizá-las em ambientes pouco confiáveis. Mas é possível montar configurações com altos padrões de segurança.
Aqui o intuito era apenas mostrar como conseguir conexões a partir de outras máquinas, usando o pgadmin ou o psql.

Antes de testar, é preciso reiniciar o PostgreSQL :
(se você não estiver mais conectado como postgres use o sudo no início da linha - eu não me acostumo muito com o sudo !)

/etc/init.d/postgresql-8.3 stop
/etc/init.d/postgresql-8.3 start

Na verdade um reload deveria ser suficiente.

/etc/init.d/postgresql-8.3 reload

Agora no pgadmin, apenas substitua o localhost (ou 127.0.0.1) pelo IP do servidor que roda o PostgreSQL.
Pelo psql use :

psql -h 192.168.0.74 -U postgres

Espero que isso ajude e qualquer problema, vamos tentar resolver juntos ;)