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).
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 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.
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.
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
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.
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.
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
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'
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
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 ;)