PostgreSQL em FreeBSD

Autor: Julio Merino (aka Slink)
Data: 16 de março de 2002.


Neste artigo vou explicar-vos como pôr em marcha o fantástico servo de bases de dados PostgreSQL no sistema operativo FreeBSD. Aliás , todo o que detalho aqui é aplicável facilmente aos demais sistemas BSDs, nos quais a situação de alguns arquivos é diferente (e outros não existem).

Instalação do pacote

Como com qualquer programa ou servo, procederemos a instalar PostgreSQL desde os ports. Recomendo-vos que configureis algumas opções de optimización (mais informação). Procederemos:

# cd /usr/ports/databases/postgresql7
# make
# make install

Uma vez termine, não o arranqueis ainda, já que deveremos realizar várias mudanças da configuração.

O diretório de dados

O servo nos instalará, por defeito, os arquivos de configuração e as bases de dados em usr //local/pgsql. Recomendo-vos encarecidamente que mudeis este diretório de lugar, para evitar "problemas" mais adiante. Assim que nosso seguinte passo consistirá em levar este diretório a home //pgsql. Para isso o copiaremos, conservando os arquivos originais:

# cp -prf /usr/local/pgsql /home

É necessário indicar-lhe a PostgreSQL que mudámos seu diretório. O processo é muito singelo e consiste em mudar os dados do usuário administrador (pgsql). Entraremos com:

# chpass pgsql

E uma vez dentro mudaremos dois campos da seguinte forma:

Home directory: /home/pgsql
Shell: /bin/sh

Aproveitámos aqui de assegurar-nos que o shell seja /bin/sh já que será o que processará os arquivos de configuração inicial.

Configuração do meio

Passaremos a configurar algumas das variáveis de meio que PostgreSQL usará. Para isso editaremos o arquivo /home/pgsql/.profile (aqui é onde intervém o shell que escojimos antes).

As variáveis mais interessantes deste arquivo são: PGDATESTYLE e LC_ALL. Editaremos as lineas que as contêm, de modo que fiquem assim:

#You might want to set some locale stuff here
PGDATESTYLE=ISO
LC_ALL=é_ES.ISO_8859-1
export PGDATESTYLE LC_ALL

Tenho leido em algum lado que a eleição de uma linguagem em LC _ALL provoca problemas de velocidade, assim que se este ponto vos interessa muito, não configureis esta variável.

Inicializando a base de dados

Agora que já configurámos o mais básico, podemos pedir a PostgreSQL que inicie sua base de dados Devemos ter em conta que todas as operações sobre o servo se têm que fazer sob o usuário pgsql; o usuário root não tem permissões especiais, ainda que o pareça. Assim pois, executaremos o seguinte comando:

# seu - pgsql -c "initdb"

Após breves instantes, aparecerá um diretório novo, /home/pgsql/data.

Uma vez já estejam os dados inicializados, procederemos a arrancar o servo (e daremos permissões de execução ao script, por se não tinha):

# chmod +x /usr/local/etc/rc.d/010.pgsql.sh
# /usr/local/etc/rc.d/010.pgsql.sh start

Configuração de usuários e contraseñas

O seguinte ponto da configuração consiste em criar usuários e configurar contraseñas. Aqui já intervêm comandos SQL, assim que vos recomendaria que vos pasáseis pela página de PostgreSQL .

Para proceder a isso, deveremos aceder ao servo mediante o usuário administrador, sendo root no sistema:

# seu - pgsql -c "psql template1"

Uma vez dentro, mudaremos a contraseña do administrador e criaremos um usuário para nós com a possibilidade de criar novas bases de dados:

template1=# ALTER USER pgsql WITH PASSWORD 'o_password_do_admin'
template1=# CREATE USER miuser WITH CREATEDB PASSWORD 'meu_password'

Podemos sair do programa pulsando %[Ctrl+D] para seguir configurando detalhes.

Autenticación

O servo de PostgreSQL aceita, por defeito o acesso de qualquer usuário local às bases de dados sem pedir contraseña. Este comportamento é muito pouco recomendável pelo que procederemos a mudá-lo. Abriremos o arquivo /home/pgsql/data/pg_hba.conf e procuraremos as seguintes linhas (que aparecem ao final de todo :

local      all                                          trust
host       all         127.0.0.1     255.255.255.255    trust

Realizaremos as mudanças de modo que fiquem da seguinte forma:

local      all                                          crypt
host       all         127.0.0.1     255.255.255.255    crypt

Guardamos e saímos.

Habilitar o acesso por TCP/IP

Em alguns casos não vamos precisar esta opção, coisa que nos dará um pouco mais de segurança. De todos modos, muitas outras vezes é necessária para poder usar determinados programas ou, simplesmente, para gestão remota das bases de dados Se precisamos esta opção, procederemos a editar o arquivo /home/pgsql/data/postgresql.conf. Procuraremos a seguinte linha:

#tcpip_socket = false

E a mudaremos por:

tcpip_socket = true

Correção do script de arranque

O script de início do servo de FreeBSD tem uma pequena falha que faz que se nos peça a contraseña de administador cada vez que queiramos iniciar ou parar o servo. Para evitar este comportamento, nos dirigiremos ao arquivo /usr/local/etc/rc.d/010.pgsql.sh e situaremos as seguintes linhas:

seu -l pgsql -c \
  '%[ -d ${PGDATA} ] && exec /usr/local/bin/pg_ctl start -s -w -l pgsql/errlog'

O que NÃO nos interessa aqui é a opção -w, pelo que a tiraremos:

seu -l pgsql -c \
  '%[ -d ${PGDATA} ] && exec /usr/local/bin/pg_ctl start -s -l pgsql/errlog'

Início do servo

Agora sim que já o temos todo pronto para poder arrancar o servo "em condições". O faremos assim:

# /usr/local/etc/rc.d/010.pgsql.sh stop
# /usr/local/etc/rc.d/010.pgsql.sh start

Aceder ao sistema

Já podemos entrar a nosso sistema de bases de dados como um usuário normal. Para isso usaremos a base de dados de prova que vem preconfigurada:

miuser$ psql template1.

Se nos pede a contraseña e todo vai bem, ¡enhorabuena! todo funcionou corretamente ;)


Hosted by www.Geocities.ws

1