Em sequência ao post anterior sobre o PostgreSQL, "Instalação PostgreSQL 9.1 32 bits em distro Debian ou Ubuntu", algumas configuraçoes adicionais para funcionamento deste Sistema Gerenciador de Banco de Dados (SGDB) serão mostradas a seguir. O objetivo é preparar o PostgreSQL para receber acesso pela rede, assim como a criação do script de inicialização.
O PostgreSQL oferece uma infinidade de recursos que podem ser aplicados de acordo com a sua necessidade, porém, apenas as principais configurações serão abordadas aqui. Serão utilizados os arquivos "postgresql.conf" e "pg_hba.conf", contidos na pasta do cluster, que em nosso exemplo, no post anterior, foi criado na pasta "/opt/postgresql-9.1.0/pgdata".
O PostgreSQL oferece uma infinidade de recursos que podem ser aplicados de acordo com a sua necessidade, porém, apenas as principais configurações serão abordadas aqui. Serão utilizados os arquivos "postgresql.conf" e "pg_hba.conf", contidos na pasta do cluster, que em nosso exemplo, no post anterior, foi criado na pasta "/opt/postgresql-9.1.0/pgdata".
Arquivo postgresql.conf
As configurações a seguir serão realizadas no arquivo "postgresql.conf", Edite o referido arquivo e inicie as configurações.
Retire o comentário da configuração da porta.
- alterar de: #port = 5432Retire o comentário da configuração da porta.
- para: port = 5432
Para servidor em produção, é recomendado a alteração do número da porta.
Configure a inicialização do serviço do "postgres" pelo ip do seu servidor, permitindo acessos pela rede.
Retire o comentário e altere o parâmetro “listen_address=”.
- alterar de: #listen_addresses = 'localhost'Retire o comentário e altere o parâmetro “listen_address=”.
- para: listen_addresses = 'ip_servidor_bd'
É muito comum a utilização de "*" para configuração deste parâmetro, onde o serviço fica em "up" utilizando o ip "0.0.0.0". Este ip, deixa a conexão conforme o endereço de rede corrente. Esta configuração não é recomendada para utilização do SGDB em produção. Utilize o ip do seu servidor de banco de dados.
Configure os logs, descomentando e/ou alterando os parâmetros conforme seguem. A habilitação destes parâmetros não são obrigatórios, e podem ser alterados de acordo com suas necessidades.
Habilite a coleta de logs:
Habilite a coleta de logs:
- alterar de: #logging_collector = off
- para: logging_collector = on
Habilite a pasta "pg_log" para gravação dos logs. Esta pasta fica no respectivo cluster, referente ao arquivo de configuração "postgresql". Em nosso exemplo, ficará em "/opt/postgresql-9.1.0/pgdata/pg_log":
- alterar de: #log_directory = 'pg_log'- para: log_directory = 'pg_log'
Habilite o "timestamp", para melhor organização e visualização dos arquivos de log:
- alterar de: #log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
- para: log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
Habilite o tempo de rotação para 1(um) dia.
- alterar de: #log_rotation_age = 1d
- para: log_rotation_age = 1d
Arquivo pg_hba.conf
Edite o arquivo “pg_hba.conf” para atribuir permissões de acesso de usuário e/ou hosts ao cluster do SGDB. Localize a linha referente ao IPV4, conforme abaixo, e inclua o usuário, base de dados e/ou host que terá acesso ao SGDB, seguindo ordem da coluna.
Veja abaixo o arquivo antes da configuração:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
Exemplo para permissão de acesso para usuário postgres em todas as base de dados a partir do ip 192.168.1.20, utilizando método de autenticação "md5".
Veja abaixo as linhas após a configuração:
# TYPE DATABASE USER ADDRESS METHOD# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all postgres 192.168.1.0/24 md5
O arquivo de configuração "pg_hba.conf" oferece bastante flexibilidade em sua configuração, e dependendo de como é feito, pode deixar "brechas" de segurança em seu SGDB, ou seja, permitindo acessos não autorizados aos bancos de dados. Como não é o foco deste post falar sobre o "pg_hba.conf", a principal dica é observar as colunas nos qual as informações são inseridas para permissões de acessos. Fazendo uma leitura do nosso exemplo, citado acima, foi atribuido permissão de acesso a todos os bancos de dados, para o usuário "postgres", no range de ip "192.168.1.0", utilizando autenticação md5.
Configurar script de inicialização
O PostgreSQL já vem com um script pré configurado para facilitar a inicialização do SGDB. Copie e configure o arquivo conforme abaixo.
~$ cp /opt/download/postgresql-9.1.0/contrib/start-scripts/linux /etc/init.d/postgresql-9.1.0
~$ sudo chmod +x /etc/init.d/postgresql-9.1.0
Configure o arquivo, editando-o e alterando os parâmetros abaixo.
Altere o parâmetro "prefix" de acordo com o caminho da instalação, que em nosso exemplo ficará.
- alterar de: prefix=/usr/local/pgsqlAltere o parâmetro "prefix" de acordo com o caminho da instalação, que em nosso exemplo ficará.
- para: prefix=/opt/postgresql-9.1.0
Altere o parâmetro "PGDATA", que indica a localização do cluster.
- alterar de: "/usr/local/pgsql/data"
- para: "/opt/postgresql-9.1.0/pgdata"
Digite o comando abaixo para que o SGDB inicialize automaticamente durante o boot do seu servidor, quando necessário.
~$ sudo update-rc.d postgresql-9.1.0-nome_projeto01 defaults 99
Após as configurações, o cluster pode ser inicializado ou parado conforme abaixo a sintaxe abaixo.
Usar: /etc/init.d/postgresql-9.1.0 {start|stop|restart|reload|status}Para concluir, quando trabalhamos com banco em produção, é importante saber qual o momento de realizar a reinicialização ou o reload no SGDB, após configurações. No caso do PostgreSQL, essas configurações são realizadas no arquivo "postgresql.conf", como já sabemos. Para obter esta informação, acesse o PostgreSQL e execute o comando "SQL" citado abaixo, para verificar a característica do parâmetro. Foi utilizado como exemplo parâmetro "port", que alteramos acima.
~$ psql -p 5432
postgres=# select name, setting, context from pg_settings where name~ 'port';
name | setting | context
------+---------+------------
port | 5432 | postmaster
(1 row)
Quando o registro do campo "context" for igual a "postmaster", realizar a reinicialização do serviço e quando for "sighup", apenas o reload é suficiente para que a configuração seja efetivada no ambiente.
Com relação ao arquivo de configuração "pg_hba.conf", sempre que alterado, apenas o reload é necessário para efetivação de configurações.
Com estas informações, o planejamento de mudanças e precauções contra impactos no ambiente podem ser realizados com segurança. Outros parâmetros configuráveis, contidos no arquivo "postgresql.conf" constam na tabela "pg_settings", podem ser consultados.
Veja também:
No mais, é Sob Demanda!
muito obrigado essa informação me salvou depois de muito procurar na internet
ResponderExcluir