comandos excÊnciais para o postgres

Upload: leilane-marinho

Post on 17-Jul-2015

387 views

Category:

Documents


0 download

TRANSCRIPT

COMANDOS EXCNCIAIS PARA O POSTGRES

IntroduoO PostgreSQL um banco de dados totalmente grtis e encontrado no endereo: http://www.postgresql.org Instrues para instalao rpida do PostgreSQL: 1 - Copie o source do Postgres do endereo: ftp://ftp.br.postgresql.org/pub/.../v8.0.1/postgresql-8.0.1.tar.bz2 2 - Descompacte o pacote: $ tar -xjvf postgresql-8.0.1.tar.bz2 3 - Acesse o diretrio: $ cd postgresql-8.0.1 4 - Configure e compile: $ ./configure --prefix=/usr/local/postgres \ --bindir=/usr/bin --sysconfdir=/etc/postgres $ gmake 6 - Instalando: $ su # gmake install 7 - Criando grupo e usurio: # groupadd postgres # adduser postgres 8 - Criando diretrio para os dados: # mkdir /usr/local/postgres/data # chown postgres:postgres /usr/local/postgres/data 9 - Inicializando o banco: # su - postgres $ initdb -D /usr/local/postgres/data 10 - Rodando o postgres em segundo plano, gravando logs:

$ postmaster -D /usr/local/postgres/data >> /usr/local/postgres/data/logfile & 11 - Criando base de dados e testando: $ createdb test $ psql test

Os comandos do PostgreSQL so parecidos com os comandos do MySQL, s h algumas pequenas diferenas. Caso surja alguma dvida ao ler este artigo: visite a documentao (ajuda) do PostgreSQL no site oficial. Com o PostgreSQL j instalado em sua mquina, para acess-lo digite o comando: $ psql Aparecer a seguinte mensagem de 'bem-vindo':Welcome to psql 7.4.2, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit

Precisando de uma ajudazinha s digitar: \h Desta forma, aparecer uma listagem dos comandos do PostgreSQL. Caso voc queira ter mais detalhes sobre o comando 'CREATE DATABASE' digite: \h CREATE DATABASE OBS.: No digite '\h CREATE DATABASE;' (com ponto-e-vrgula ; no final) pois assim aparecer uma mensagem de erro. O PostgreSQL possui arquivos de configurao que afetam questes diversas que vo de segurana da informao performance do banco, e nada melhor do que a documentao oficial, que traz tudo detalhado. Decidi por falar um pouco sobre a autenticao de clientes, mais especificamente do pg_hba.conf, pois apesar de relativamente simples, trata-se de um assunto recorrente no momento no frum e vejo que muitas pessoas ainda possuem algumas dvidas, logo, vou tentar tratar dos pontos bsicos para quem est comeando nessa rea e no final tentarei apresentar algo do tipo, aprenda por exemplos (mas ficaria muito contente se voc lesse todo o contedo). Ento, para aqueles que querem detalhes ou aqueles que s querem dar uma olhada nos exemplos, aqui vai o artigo.

pg_hba.confO pg_hba.conf tem seu nome derivado de "host-based authentication" e quem controla a autenticao dos clientes junto ao servidor, ou seja, capaz de barrar o acesso antes mesmo que uma conexo seja estabelecida. Ele fica, na maioria dos casos, no prprio diretrio de inicializao que passado no initdb, mas ele pode ser alterado para qualquer outro diretrio, para isso basta informar o caminho no arquivo postgresql.conf, na varivel hba_file. Ex.: hba_file = '/outro-diretrio/pg_hba.conf' Sua estrutura bem simples, trata-se de uma lista na qual cada linha representa um tipo de configurao. importante ressaltar o funcionamento desta lista, assim como uma lista de convidados em uma festa, se for encontrada uma condio que libere a entrada, os demais registros so ignorados. O que isso quer dizer? Oras, que voc deve colocar primeiro as restries mais severas e por ltimo as permisses mais abertas. Isso mesmo, primeiro coloque na sua lista aqueles que voc no quer na sua festa (reject) e ponha os VIP no final da lista. O formato bsico do registro, como est descrito no prprio pg_hba.conf, possui os campos TYPE, DATABASE, USER, CIDR-ADDRESS e METHOD. # TYPE #--------------------------O primeiro parmetro diz respeito ao tipo de conexo ao que a regra ser aplicada: local, host, hostssl e hostnossl. local - difcil encontrar o que dizer deste tipo, pois o nome diz tudo; a documentao oficial diz que trata de conexes via socket domain, eu diria, para simplificar, que trata de conexes locais mesmo e que sem um registro destes no h como se conectar localmente. Claro que alguns diriam que podemos formar uma conexo TCP/IP com o prprio servidor, o que verdade, mas foge do conceito de local. host - refere-se s conexes efetivadas via TCP/IP, independentemente se elas so SSL ou no. Aqui cabe uma ressalva, que feita at na documentao oficial, mas nunca demais lembrar, que para que o banco de dados aceite conexes TCP/IP necessrio adequar o seu listen_addresses no postgresql.conf colocando o IP do servidor. Ex.: listen_addresses = 'localhost, 192.1.125.3' hostssl - o que voc identificar com este tipo, s valer para as conexes do tipo SSL. hostnossl - ter validade para conexes no SSL. Como pode-se ver bem simples, as conexes podem ser locais (local) ou externas (host), sendo que posso escolher ainda que determinadas configuraes se apliquem apenas conexes seguras (hostssl) ou justamente quelas no seguras (hostnossl). # DATABASE #--------------------------O segundo parmetro trata-se do DATABASE ao qual se refere o registro. No h muito que falar, apenas que muitas pessoas deixam como all, o que no faz muita diferena se voc trabalha apenas

com um banco, mas se voc tiver mais de um no mesmo servidor, vale a pena especificar que os servidores da aplicao A s podem ver o banco A. No custa nada, fcil rpido e indolor. # USER #--------------------------Define os usurios a quem se aplica a regra, que pode ser o prprio usurio, um grupo ou uma lista. O usurio fcil de entender, o grupo, trata-se de um grupo criado no seu banco de dados e a lista criada em um arquivo a parte, fora do banco de dados. Para o grupo, basta cri-lo no seu banco de dados, incluir os usurios nele e indicar o nome do grupo precedido de um + no pg_hba.conf. Ex.:TYPE host DATABASE producao USER +admins

Voc pode ainda criar uma lista de usurios, apesar de no entender um motivo para isso, mas se voc conseguir ver uma utilidade para criar uma lista ao invs do grupo diretamente no banco, basta criar um arquivo no mesmo diretrio que o pg_hba.conf e indicar como no grupo, mas utilizando o @. Ex.:TYPE host DATABASE producao USER @admins

# CIDR-ADDRESS #--------------------------No campo CIDR (Classless Inter-Domain Routing) so inseridos o IPs que devem ser habilitados e a mscara de rede. Apenas para registros do tipo "local", no preencha este campo. Vamos supor que o cliente vai tentar acessar atravs do IP 192.10.125.50, podemos ento representar isso de duas formas: 192.10.125.50/32 ou 192.10.125.50 255.255.255.255 Ambas dizem que apenas este endereo ir acessar o servidor de banco de dados, agora vamos supor que voc quer liberar para as mquinas da rede deste usurio, cuja mscara 255.255.255.0, ento voc poderia identificar como: 192.10.125.0/24 ou 192.10.125.0 255.255.255.0 Outros exemplos de formao de mscaras podem ser encontradas em: Classless Inter-Domain Routing - Wikipedia, the free encyclopedia

# METHOD #--------------------------Aps ter verificado os outros campos e encontrar um registro que coincida, este campo determina o mtodo a ser utilizado. No falarei de todos, at porque isso est documentado no site do PostgreSQL, ento mostrarei apenas os mais utilizados. trust - a forma menos segura e deve ser evitada ao mximo em ambiente de produo. Ao utilizar trust no ser solicitado sequer senha e o usurio poder acessar o banco como qualquer outro usurio, inclusive postgres. password - um pouco mais seguro que o trust, ele requer o password do usurio que est tentando se conectar. O problema que esta senha no vem criptografada. Acho que no preciso dizer mais nada, no ? md5 - mais um passo rumo a segurana. Neste caso ser solicitada a senha que o cliente vai criptografar, logo a senha no trafega aberta na rede. Com certeza bem mais seguro, e c entre ns, este o mtodo mais utilizado no caso de conexes no SSL. Mas uma vez que trata-se de um algoritmo bem difundido, algumas senhas podem figurar em dicionrios facilmente encontrados at na web, como por exemplo em: http://www.matteoweb.it/old/md5_dictionary_hack/index.php ident - um recurso muito interessante, principalmente para acesso local. Neste caso o usurio obtido a partir do sistema operacional cliente e esse dado que passado ao PostgreSQL. Isso evita que o usurio conectado localmente se passe por outro, fechando uma janela para invases. Contudo, para conexes de outro servidor, isso pode ser uma grande porta aberta, pois podem ser criados usurios fantasma nos servidores distribudos, que sero passados como vlidos e confiveis para o seu banco de dados. Portanto, uma opo bacana para local, ruim para os demais. ldap - como o nome sugere, utiliza uma base ldap para validar o usurio. reject - o ltimo e mais seguro, afinal o que ele faz isso mesmo, rejeitar conexes. Atravs dele voc pode criar uma lista de usurios ou domnios de rede que no podero se conectar ao seu banco. No tratarei mais dos mtodos, pois como disse essa parte inicial s para resumir um pouco do que diz a documentao oficial e alguns comentrios meus, agora vamos parte prtica. Vamos montar ento um pg_hba.conf aceitvel: 1) Para no guardar a senha do postgres em um .pg_pass, sem criptografia etc, voc pode usar:# TYPE local DATABASE all USER postgres CIDR-ADDRESS METHOD ident sameuser

Liberamos o usurio postgres desde que ele seja o postgres no sistema operacional, neste caso scripts na CRON deste usurio vo funcionar belezinha. Ou mesmo:# TYPE DATABASE USER CIDR-ADDRESS METHOD

local

all

all

ident sameuser

Todos os usurios localmente sero "ident sameuser", ou seja, o usurio do sistema operacional ir para o banco (opcionalmente usando map). 2) Liberar interface do loop back# TYPE local host DATABASE all all USER all all CIDR-ADDRESS 127.0.0.1/32 METHOD ident sameuser md5

Ou "ident sameuser" caso necessite utilizar o pg_admin ou outra aplicao que estabelea um socket local. 3) Liberar acesso para os servidores de aplicao:# TYPE local host host DATABASE all all banco1 USER all all aplicacao1 CIDR-ADDRESS 127.0.0.1/32 192.160.50.22/32 METHOD ident sameuser md5 md5

Libera conexo TCP/IP para o usurio da aplicao, do IP do servidor e apenas para o seu banco. Legal se conseguir passar a senha via MD5, caso contrrio use o ident e em ltimo caso o trust. 4) Liberar para a subrede de estaes de trabalho dos DBAs:# TYPE local host host host DATABASE all all banco1 all USER all all aplicacao1 +admins CIDR-ADDRESS 127.0.0.1/32 192.160.50.22/32 192.160.55.0/24 METHOD ident sameuser md5 md5 md5

Liberamos aqui o acesso para a sub-rede 192.160.55.*** para os usurios cadastrados no grupo admins. 5) Excluir uma mquina que est no range, mas de desenvolvimento, por exemplo:# TYPE local host host host host DATABASE all all banco1 all all USER all all aplicacao1 all +admins CIDR-ADDRESS 127.0.0.1/32 192.160.50.22/32 192.160.55.12/32 192.160.55.0/24 METHOD ident sameuser md5 md5 reject md5

Isso mesmo, colocar o reject antes da liberao, isso muito importante. Lembre-se do que eu disse, primeiro feche as portas e depois v liberando aos poucos, pois uma vez autorizado, no adianta nada o que dizem os prximos registros. Lembrando que a configurao acima tambm pode ser representada assim:# TYPE DATABASE METHOD local all ident sameuser USER all IP MASK

host host host reject host

all banco1 banco1 all

all aplicacao1 aplicacao1 +admins

127.0.0.1 192.160.50.22 192.160.55.12 192.160.55.0

255.255.255.255 255.255.255.255 255.255.255.255 255.255.255.0

md5 md5 md5

Simples!? Isso mesmo, simples... e ai que mora a beleza. Liberamos o acesso local para os usurios conforme sua autenticao no SO (scripts na crontab funcionaro sem problemas, inclusive os agendados para manuteno com user postgres). Liberamos tambm a interface loop back, desde que o usurio digite sua senha. A aplicao informa o password para conectar ao banco e s pode faz-lo do servidor especificado (se mudar para ident, voc deve confiar na segurana do servidor de aplicao). Por fim liberamos um range de IPs de onde nossos DBAs podero efetuar seu logon e proibimos um endereo indesejado. O resto automaticamente ser negado, no tem mistrios. Existem adeptos que dizem que mais fcil ser menos exigente nesta etapa e cercar o ajuste fino das permisses, nos GRANT fornecidos. No deixa de ser uma opo e at que no ruim, mas uma camada de segurana extra da qual voc est abrindo mo, por isso, particularmente, acho que vale a pena gastar um tempinho aqui sim. Para criar um banco de dados, fazemos: CREATE DATABASE nosso_banco_de_dados; // utiliza-se ponto-e-vrgula no final de cada comando SQL Para acessar este banco de dados que acabamos de criar (nico modo que sei fazer): 1. Samos do PostgreSQL usando: \q 2. Retornamos ao PostgreSQL usando o comando: psql nosso_banco_de_dados Agora que estamos acessando nosso banco de dados, iremos criar uma simples tabela nele. CREATE TABLE tabela_noticia ( titulo VARCHAR(90), -- ttulo da notcia conteudo TEXT -- texto da notcia ); Alguns comentrios: 'CREATE TABLE' o comando utilizado para criar uma tabela. 'tabela_noticia' o nome da tabela. 'titulo' uma coluna da tabela_noticia e 'VARCHAR(90)' o tipo de varivel desta coluna (VARCHAR(X) = X caracteres). 'conteudo' outra coluna da tabela_noticia e 'TEXT' o tipo da varivel desta coluna.

Dois traos '--' introduz um comentrio, o PostgreSQL ignora o que vem depois deles. Para saber mais sobre o comando 'CREATE TABLE' digite: \h CREATE TABLE Para inserir uma notcia com o ttulo: 'minha primeira noticia' e com o contedo: 'esta eh a minha primeira noticia', devemos usar o seguinte comando: INSERT INTO tabela_noticia (titulo, conteudo) VALUES ('minha primeira noticia', 'esta eh a minha primeira noticia'); Pronto, se tudo correu bem, sem nenhum erro, ento temos um banco de dados, uma tabela e dados inseridos nesta tabela. Para vermos os dados salvos nesta tabela, ou seja, para lermos as notcias gravadas, digitamos o comando: SELECT * FROM tabela_noticia; Receberemos o texto de resposta:titulo | conteudo ------------------------+---------------------------------minha primeira noticia | esta eh a minha primeira noticia (1 row)

Minha pequena ajuda acaba por aqui. Sim, s pra concluir, se no gostou desta tabela, para exclu-la faa: DROP TABLE tabela_noticia; e para apagar o BANCO DE DADOS (nico modo que sei fazer): 1. Saia do PostgreSQL: \q 2. Volte ao PostgreSQL: psql Depois digite: DROP DATABASE nosso_banco_de_dados; \q Se voc tiver alguma dica para melhorar este artigo, no hesite, envie agora mesmo! Ol! O PostgreSQL quando instalado cria um usurio chamado "postgres", que possui uma shell com permisses totais de gerenciamento do banco de dados. Como "root", digite: # su - postgres Verifique: $ whoami postgres

Jia! Agora voc possui uma srie de comandos que podem ser usados para gerenciar o PostgreSQL: - pg_dumpall - psql - createuser - dropdb - dropuser - clusterdb - vacuumdb - createdb - pg_dump - pg_restore - readpgenv - psql-wm A partir da voc pode criar uma database assim: $ createdb vivaolinux como usuario postgres, acesse o arquivo /var/lib/pgsql/data/postgres.conf. Ele o principal arquivo de configurao do Banco...Algumas variaveis importantes: - tcpip_socket -> deixe-a como true - max_connections-> o Padrao 32. Caso tenha mais maqs 'penduradas', altere-a. -port - > O padro 5432. Se houver necessidade, altere-a. Outro arquivo importante o /var/lib/pgsql/data/pg_hba.conf. nele que vc determina quais maqs e usuarios tero acesso aos seus bancos.

InstalaoVerso 8.3 no Ubuntu 9.10 ? sudo aptitude install postgresql-8.3 postgresql-client-8.3 1 pgadmin3 pgadmin3-data postgresql-server-dev-8.3 libpostgresqlocaml-dev Verso 8.4 no Ubuntu 10.04 ? sudo aptitude install postgresql postgresql-contrib libpq-dev pgadmin3 Criando uma senha 1 ? 1 sudo su postgres -c psql postgres 2 ALTER USER postgres WITH PASSWORD 'sua_senha';

Gerenciar bancos de dadosCriar uma base pelo terminal ? 1createdb -U username -E utf8 dbname -h localhost Criar uma base pelo psql ? 1create database dbname with owner=postgres encoding='utf8'; Renomear uma base ? 1alter database "old_name" rename to "new_name"; Apagar uma base ? 1drop database dbname;

Backup (dump) e restoreDump de uma base ? 1pg_dump dbname -h localhost -U postgres > backup.sql Dump de uma tabela apenas ? pg_dump dbname -h localhost -U postgres > backup.sql --table=nome_tabela; Dump de uma base apenas com algumas tabelas 1 ? pg_dump dbname -h localhost -U postgres > backup.sql --table=nome_tabela --table=outra_tabela; Dump de uma base sem determinada tabela 1 ? pg_dump dbname -h localhost -U postgres > backup.sql --excludetable=nome_tabela; Dump de uma base excluindo vrias tabelas 1 ? pg_dump dbname -h localhost -U postgres > backup.sql --excludetable=nome_tabela --exclude-table=outra_tabela; Restore de uma base 1 ? 1psql dbname -h localhost -U postgres < backup.sql Dump dos usurios de uma base ? 1pg_dumpall -g -U postgres -h localhost > users.sql

Comandos especiais em queriesData

? 1select (current_date + integer '7') as nome_campo; Veja mais exemplos aqui. MySQL ou PostgreSQL, qual usar? Ambos so muito bons e no fazem feio diante das alternativas pagas. Alm disso, possuem recursos e vantagens em comum, o que significa que, para a maioria das aplicaes, ambos podem ser usados. Na verdade, o correto no tentar descobrir qual o melhor, mas em que situao um ou outro deve ser utilizado. O PostgreSQL otimizado para aplicaes complexas, isto , que envolvem grandes volumes de dados ou que tratam de informaes crticas. Assim, para um sistema de comrcio eletrnico de porte mdio/alto, por exemplo, o PostGreSQL mais interessante, j que esse SGBD capaz de lidar de maneira satisfatria com o volume de dados gerado pelas operaes de consulta e venda. O MySQL, por sua vez, focado na agilidade. Assim, se sua aplicao necessita de retornos rpidos e no envolve operaes complexas, o MySQL a opo mais adequada, pois otimizado para proporcionar processamento rpido dos dados e tempo curto de resposta sem exigir muito do hardware. Se voc precisa, por exemplo, de um banco de dados para armazenar o contedo do seu site, de seu frum ou necessita manter um cadastro de usurios de um portal, o MySQL "serve como uma luva", pois tais aplicaes no necessitam dos recursos avanados que o PostgreSQL oferece. Para escolher um destes dois SGBD, procure entender bem quais recursos sua aplicao precisa. Tente estimar o volume de dados, avalie o hardware disponvel, certifique-se das funcionalidades necessrias e, posteriormente, procure por informaes mais detalhadas do MySQL e do PostGreSQL. Se sua aplicao for simples - principalmente se for algo ligado internet -, no preciso pensar muito: o MySQL uma escolha satisfatria, pois facilmente encontrado em servios de hospedagem. Todavia, h situaes em que tanto o MySQL quanto o PostgreSQL sero boas escolhas. Nesses casos, recomendvel fazer testes com ambos e avaliar qual oferece mais vantagens aplicao

Erros comunsDuplicate key value violates unique constraint Ao migrar uma base para PostgreSQL ou fazer alguma coisa errada sem querer, o seguinte erro pode aparecer: PGError: ERROR: duplicate key value violates unique constraint tablename_pkey Para resolver: ? 1 select setval('entities_id_seq', (select max(id) from entities) +1);

Personalizando o psqlalterando o pager

? 1 \pset pager off 2 \pset pager off 3 \pset pager always 4 \pset pager occasionally 5 \pset pager at random Exebir (null) quando um campo for null ? 1\pset null '(null)'

Alterar o proprietrio de uma sequncia: \c [TABELA]; alter table [SEQUENCIA] owner to [USUARIO];

Alterar a senha do usurio postgres: \c template1; alter user postgres with password 'postgres_password'; Em um post passado, disponibilizei um programa feito em Shell Script que permite efetuar o backup do MySQL. Bem, efetuei algumas atualizao que havia prometido, e agora j possivel receber email aps a realizao do backup e fazer copias tambm do PostgreSQL. Caractersticas Arquivos individuais para cada bancos de dados: Permite gerar um arquivo compactado (gzip) para cada BD do seu programa de BD (MySQL ou PostgreSQL) ou, Arquivo nico para todos os bancos de dados: Gera um nico arquivo contendo o backup de todos os bancos de dados do programa de BD (MySQL ou PostgreSQL); Histrico de backup com limite mximo de verses anteriores: Ideal para casos onde necessrio restaurar o estado de um banco de dados de alguns dias atrs e o administrador no dispe de nenhum software que gerencia o backup (Data Protector, Veritas, Tivoli, etc); Arquivos com nomes nicos: Caso voc utiliza algum software responsvel pelo gerenciamento do backup, basta no optar pelo histrico e toda vez que for executado o script os arquivos sero sobrescritos; Excluso de Databases: Permite definir quais bancos de dados no sero copiados (funciona apenas quando for gerado arquivos individuais para cada banco de dados). Permite uma lista de excluso por programa de BD (MySQL ou PostgreSQL); Backup por programa ou integrado: Permite que seja efetuado backup apenas do MySQL, apenas do PostgreSQL ou de ambos os programas na mesma execuo; Download: backupBd.sh (Verso 1.1) Permitir a excluso de databases mesmo quando optar-se pela gerao de um nico arquivo de backup; Recuperao de dados (script para restore de databases); Mais alguma coisa ?

Opes para gerao de relatriosSeguindo um novo modelo de publicaes, vou listar de forma rpida e objetiva algumas solues open source que encontrei para substituir solues comerciais responsveis pela gerao de relatrios. Aplicaes comerciais (Pagas) Crystal Reports (Site): Comprada pela SAP; Cognos ReportNet (Site): Comprada pela IBM. Microsoft SQL Server Reporting Services (Site / pt_BR): Soluo da Microsoft que vem junto com o Microsoft SQL Server. Disponibiliza os relatrios via Web (precisa do IIS instalado) de forma esttica ou interativa. Ideal para quem programa em .NET usando SQL Server; Aplicaes Open Source JasperReports (site): Biblioteca escrita em java e recomendada para quem vai programar nesta linguagem. Gera relatrios impressos ou documentos em formato HTML, PDF, MS Excel, OpenOffice, e MS Word). Tambm existe a verso servidor (JasperServer) que interativa entregando uma plataforma de Business Intelligence (BI) alm de relatrios sob demanda ou agendados. Licenciado sobre Aferro GPL; OpenRPT (site): Tem uma ferramenta para construir os relatrios (designer) que roda em Linux, windows e MacOS. Conecta em bancos Postgres (ODBC genricos) e com um pouco de esforo em Oragle, DB2, SQL Server e MySQL. Usei rapidamente e no achei muito fcil, alm de no ter achado uma verso servidor. Licenciado pela GPL; OpenReports (site): Soluo de relatrios baseada em web. Pode usar engines como JasperReports, JFreeReports, JXLS. No li muito sobre ele, mas como vi a disponibilidade, decidi compartilhar; Got Reportviewer (site): um controle que permite adicionar relatrios em aplicaes desenvolvidas em .NET. Fyireporting (site / dica para conexo Postgres): De todos, este foi o que testei mais profundamente. Feito em .NET, suporta a linguagem RDL (Report Definition Language) a mesma usada pelo Microsoft SQL Server Reporting Services. Gera relatrios em vrios formatos (pdf, html, doc, xls, rtf, csv, entre outros) e tambm permite a entrega de consultas em forma de matrizes. Permite carregar dados a partir de servidores de BDs (MySQL, Postgres, SQL Server, etc) assim como de arquivos csv, xml ou mesmo web services. A licena empregada a Apache License v2. Tem basicamente 4 aplicativos principais: fyireporting Designer: Usado para montar o layout do relatrio no estilo WYSIWYG; fyireporting Desktop: Levanta uma verso servidor que atende na porta 8080 (via navegador), e entrega os relatrios RDL (que na verdade uma marcao XML) via navegador; fyireporting Reader: Sua funo permitir gerar relatrios em qualquer formato a partir do arquivo RDL gerado previamente; rdlcmd: Utilitrio de linha de comando que permite informar o arquivos de entrada e path de sada e o formato que voc quer o relatrio.

Atualizaes: -(2010-09-03) Adicionado link para OpenReports;

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Instalando, configurando e iniciando o PostgreSQL # Instalando, configurando e iniciando o PostgreSQL 7.3.6 # Servidor Red Hat 7.3 # por Levi Leopoldino Alves # [email protected] Compilando: Baixe o cgido-fonte em algum mirror localizado em ftp://ftp.br.postgresql.org/pub/PostgreSQL/source/ v7.3.6/postgresql-7.3.6.tar.bz2 $ ./configure $ gmake $ su (senha de root) # gmake install Lembrando que para compilar algum programa com xito necessrio que os compiladores junto com suas bibliotecas estejam instalados em seu sistema. Isso feito facilmente marcando a opo de "Desenvolvimento" durante a instalao de qualquer distribuio do Linux. Configurando: Depois de compilado, siga esses passos: $ su (senha de root) # adduser postgres # echo "PATH=/usr/local/pgsql/bin:$PATH" >> /home/postgres/.bashrc # echo "export PATH" >> /home/postgres/.bashrc # mkdir /usr/local/pgsql/data # chown postgres /usr/local/pgsql/data # su - postgres Iniciando: initdb -D /usr/local/pgsql/data postmaster -D /usr/local/pgsql/data >logfile 2>&1 & Testando: # su postgres $ createdb test $ psql test Apagando: $ dropdb test Seu PostgreSQL j deve estar funcionando se chegou at aqui. Agora os ajustes finais: Script para iniciar/ parar/ status do PostgreSQL: ------------------------------>Incio do Script/dev/null 2>&1 ; then ECHO_N="echo -n" ECHO_C="" else ECHO_N="echo" ECHO_C='c' fi # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # What to use to start up the postmaster DAEMON="$prefix/bin/pg_ctl" set -e # Only start if we can find pg_ctl. test -f $DAEMON || exit 0 # Parse command line parameters.

case $1 in start) $ECHO_N "Iniciando PostgreSQL: "$ECHO_C su -l $PGUSER -s /bin/sh -c "$DAEMON -D '$PGDATA' -o -"i" -l $PGLOG start" echo "ok" ;; stop) echo -n "Parando PostgreSQL: " su - $PGUSER -c "$DAEMON stop -D '$PGDATA' -s -m fast" echo "ok" ;; restart) echo -n "Reiniciando PostgreSQL: " su - $PGUSER -c "$DAEMON restart -D '$PGDATA' -s -m fast" echo "ok" ;; status) su - $PGUSER -c "$DAEMON status -D '$PGDATA'" ;; *) # Print help echo "Modos de uso: postgresql {start|stop|restart|status}" 1>&2 echo "by Tiago Cruz" exit 1 ;; esac exit 0 ------------------------------>Fim do Script db_schema.sql -U postgres # Restore psql -e test < db_schema.sql -U postgres Bom, espero que este documento seja til a algum Instalando, configurando e iniciando o Iserverd Este tutorial foi escrito com base o sistema operacional Red Hat 7.3 Faa download da verso mais recente do iserverd na seguinte URL: http://iserverd.khstu.ru/download/IServerd-2.4.6.tar.gz NOTA: Testei a verso 2.4.9, no obtive sucesso, pois dava problema na compilao, erro de bibliotecas do tvision. Estou usando a verso 2.4.6 a mais de dois meses e ainda no tive problema. Descompacte o arquivo Iserverd-2.4.6.tar.gz e entre no diretrio que ser criado: $ tar -zxvf Iserverd-2.4.6.tar.gz $ cd Iserverd-2.4.6 Agora ns vamos compilar e instalat o pacote Iserverd

# ./configure prefix=/etc with-name=Iserverd # make all # make install Configurao do Iserverd Entre no diretrio /etc/Iserverd/etc e renomeie todos os arquivos .conf.default para .conf # mv iserv.conf.default iserv.conf # mv v3_proto.conf.default v3_proto.conf # mv v5_proto.conf.default v5_proto.conf # mv v7_proto.conf.default v7_proto.conf Edite o arquivo iserv.conf e altere de acordo com suas necessidades, segue um exemplo abaixo: # This is the main IServerd config file. Don't forget to # change database and info passwords. Probably you'll need # to change admin email (it is used in broadcast and # error messages). [Globals] # ------server parameters ---------------------Bind on all interfaces Bind interface Listen port Pid file path Translate path Translate table Var dir path Server mode Min childs Max childs Shared memory size Default ping time Depart list version Externals number Admin email Info Password Enable actions Enable watchdog Watchdog timeout WWP socket filename Actions config file Realtime online db = = = = = = = = = = = = = =

= = = = = = = = No 192.168.0.6 5190 /etc/Iserverd/var/iserverd.pid /etc/Iserverd/etc/translate RUSSIAN_WIN /etc/Iserverd/var daemon 4 100 512000 120 1 0 [email protected] DEFAULT False True 10 /tmp/wwp_sock /etc/Iserverd/etc/actions.conf False # -----parameters for database system ---------database user database password database addr database port users db name = = = = = vacuumdb timeout = Defrag db check period= Online db check period= iserver (COLOQUE SENHA DO USER iserverd) localhost 5432 users_db 1800 43200

3600 # -----parameters for log/debug system---------Maxlog size Log umask Log level Debug level Timestamp logs Append logs Log process pid = = = = = = = 500 022 10 10 True False False # -----Config files for Vxx proto modules-------Include Include Include = = = /etc/Iserverd/etc/v3_proto.conf /etc/Iserverd/etc/v5_proto.conf /etc/Iserverd/etc/v7_proto.conf Agora volte ao console e inicie o PostgreSQL: # cd /etc/init.d/ # ./postgresql start Agora criaremos a base de dados do iserverd: # su postgres $ cd /etc/Iserverd/bin $ ./db_manager create users_db $ exit Agora iremos mover o script iserverd.sh para /etc/init.d/ depois renomear para iserverd # cd /etc/init.d/ # cp /etc/Iserverd/etc/iserverd.sh . # mv iserverd.sh iserverd Inicie o Iserverd: # cd /etc/init.d/ # ./iserverd start Verifique se o PostgreSQL esta rodando: # ps -ax | grep -i postgres 659 ? 660 ?

792 ? 793 ? 794 ? 795 ? 799 ? 800 ? 806 ? 715 pts/1 S S S S S S S S S R 0:00 postgres: stats buffer process 0:00 postgres: stats collector process 0:00 postgres: postgres users_db 127.0.0.1 0:00 postgres: postgres users_db 127.0.0.1 0:00 postgres: postgres users_db 127.0.0.1 0:00 postgres: postgres users_db 127.0.0.1 0:00 postgres: postgres users_db 127.0.0.1 0:01 postgres: postgres users_db 127.0.0.1 0:00 postgres: postgres users_db 127.0.0.1 0:00 grep -i postgres idle idle idle idle idle idle idle NOTA: Copiar o arquivo /usr/local/pgsql/lib/libpq.so.3 para /usr/lib/ para ter funcionamento do script iserverd Beleza, se voc chegou at aqui, parabns j est pronto seu servidor de ICQ local. Gerenciamento do Iserverd Criando um usurio de ICQ: # su postgres $ cd /etc/Iserverd/etc/db/ $ ./icquser add 1001 NOTA: Comear pelo 1001. Preencha os dados solicitados e pronto! Agora s instalar o ICQ em uma estao cliente Rwindows (icq99) ou Linux (Licq) e configurar o programa para acessar o servidor de ICQ Iserverd. IP: IP da mquina onde esta instalado o Iserverd. Porta: 5190 UIN: 1001 Senha: foi informada durante a criao do usurio. Concluso:

Espero que este manual ajude e atenda suas necessidades! Atualmente estou utilizando clientes ICQ para Rwindows e Linux conectando ao Iserverd. Crticas e sugestes sero bem vindas. Levi Leopoldino Alves ([email protected]). Agradecimento: Ao colega da empresa minoica, que me ajudou bastante na configurao do Iserverd e clientes de ICQ. A Alexandra, Analista de Sistemas da empresa ADERE, que me deu toda fora e confiana no meu trabalho para implantar na empresa. E para todos os moradores da republica osama bin laden, que sempre confiaram em meus projetos e trabalhos desenvolvidos por mim, um grande abrao ao Osvaldo, Luciano, Brody, Paulo nabo, Juliano e Peido (Rodolfo).