terça-feira, 8 de outubro de 2013

PDO (PHP Data Objects) Conexão em diversos bancos

É um modulo da linguagem PHP responsável por unificar o acesso a vários banco de dados utilizando uma mesma sintaxe, atuando ainda na camada de abstração do PHP.
Vantagem
- Fornece uma biblioteca limpa e consistente, para deixar unificadas as características das extensões que acessam os bancos de dados.
Desvantagem
- Não efetua a leitura e tradução das instruções SQL, é apenas realizada a fusão dos métodos mandados para extensão respectiva.

Características PDO
Flexibilidade -  Como o PDO carrega driver especifico do banco de dados em tempo de execução, não é preciso reconfigurar o PHP sempre que um banco de dados diferente for usado.
Desempenho – O PDO está escrito em C e compilado em PHP, o que lhe garante um aumento considerável no desempenho em relação a sua escritas em PHP.
Consistência de código – No PDO não existe inconsistência de código, pois é oferecida apenas uma interface unificada que é está disponível para qualquer banco de dados.
Características de orientação de objetos – Possui recursos de orientação a objetos, o que resulta em uma comunicação mais poderosa e eficiente com banco de dados.
Instalação
O PDO vem junto com o PHP 5.1 (e nas versões mais recentes), por isso quem possuir essa versão terá apenas verificar se no php.ini possui a linha:

extension=php_pdo.dll
extension=php_pdo_mysql.dll

Conexão para o banco de dados POSTGRESQL
New PDO(‘pgsql: dbname=example; user=usuário; password=senha; host=localhost’);


Fazendo a Conexão


use PDO;
    class Database{
        //variavel global (conexao com o BD)
        public static $db;

        //Nosso metodo de instancia
        public function instance(){
          //se não existir a conexao com o banco de dados ele cria, senão ele retorna a conexao.
            if (!self::$db) {
                //
                $db = new Database();
                //Cria a conexao
                self::$db = $this->connect();
            }
            //
            return self::$db;
        }
        // Nossa conexão com PDO
        private function connect(){
            //Instanciar o PDO, onde teste é o nome do meu banco,
            $db = new PDO('pgsql:dbname=teste;user=postgres; password=pgsql;host= localhost');
            //serve para tratamento de erro
            $db->setAttribute(PDO::ATTR_ERRMODE, ERRMODE_EXCEPTION);
            //
            return $db;
        }
    }
    //Instancia de Database
    $db = new Database();
    //Para inserir precisa chamar o instance
    $bancodedados = $db->instance();
    //inserindo dados
    $bancodedados->query("insert into cliente values (123124,'Maria','F',23456676)");

?>

Agora só executar que será inserido no banco de dados....

terça-feira, 27 de agosto de 2013

(Parte II) Replicação utilizando Slony 2.0.2, PostgreSQL 8.4 e Windows XP SP3 (x86)

No post  passado foi demonstrado a configuração do master e do slave, do Postgres e a configuração do Firewall do Windows. Neste post explicaremos a parte de replicação do banco de dados Postgres.

5.  Replicando o Banco de Dados.

Crie um banco de dados ou utilize um seu já existente no pgAdmin III na máquina Master e depois crie um idêntico na máquina Slave.


PROCEDIMENTOS PARA A MÁQUINA MASTER

Abra o Bloco de Notas e digite as seguintes linhas:

ATENÇÃO!!!!
(No Seu arquivo altere os campos que estão entre “%” e depois apague o símbolo de “%”. Não adicione essa linha!)

 cluster name = %NomedoseuCluster%;  
 node 1 admin conninfo = 'dbname=%NomeDoSeuBancoMaster% host=%IPDaSuaMáquinaMaster% user=%UsuarioDoSeuBancoMaster% password=%SenhaDoSeuBancoMaster%;  
 node 2 admin conninfo = 'dbname=%NomeDoSeuBancoSlave% host=%IPDaSuaMáquinaSlave% user=%UsuarioDoSeuBancoSlave% password=%SenhaDoSeuBancoSlave%;  
 init cluster (id=1, comment='nodo mestre');  
 create set (id=1, origin=1, comment='minhas tabelas');  
 set add table (set id=1, origin=1, id=1, fully qualified name='public.%NomeDeAlgumaTabelaDoSeuBanco%', comment='tabela_cidades');  
 set add table (set id=1, origin=1, id=2, fully qualified name='public. %NomeDeAlgumaTabelaDoSeuBanco%', comment='tabela_estados');  
 store node (id=2, event node=1, comment= 'node escravo');  
 store path (server=1, client=2, conninfo='dbname=%NomeDoSeuBancoMaster% host=%IPDaSuaMáquinaMaster% user=%UsuarioDoSeuBancoMaster% password=%SenhaDoSeuBancoMaster%');  
 store path (server=2, client=1, conninfo='dbname=%NomeDoSeuBancoSlave% host=%IPDaSuaMáquinaSlave% user=%UsuarioDoSeuBancoSlave% password=%SenhaDoSeuBancoSlave%');  
 store listen (origin=1, provider=1, receiver=2);  
 store listen (origin=2, provider=2, receiver=1);  


NO MEU ESTUDO DE CASO FICOU ASSIM


Arquivo Master
Salve o arquivo com o nome “Master”, copie esse arquivo e cole dentro da pasta “bin” do PostgreSQL.

Ex.: C:\Arquivos de programas\PostgreSQL\8.4\bin

Pasta bin.


Feito isso agora vamos criar a replicação:
Abra o Prompt de Comando (cmd) (para sistemas que possuem UAC – Controle de Conta de Usuário abra o Prompt de Comando (cmd) no modo administrador. Ex.: Botão direito do Mouse abrir como administrador).
Sistemas sem UAC – Controle de Conta de Usuário

Abrindo o prompt do windows

Sistema com UAC  - Controle de Conta de Usuario
Aberto o Prompt digite “cd\” não digite as aspas e depois navegue até a pasta utilizando: cd C:\Arquivos de programas\PostgreSQL\8.4\bin se não der certo veja o caminho que seu PostgreSQL está instalado.

Acessando a pasta pelo Prompt.
Feito isso digite o seguinte comando:
slonik Master.txt
Feito isso aparecera as seguintes mensagens:
Mensagem de configurado.
Pronto cluster de replicação criado na máquina Master, o cluster de cada máquina só precisa ser criado uma vez, agora vamos para a máquina Slave.

PROCEDIMENTOS PARA A MÁQUINA SLAVE
Abra o Bloco de Notas e digite as seguintes linhas:

ATENÇÃO!!!
(No Seu arquivo altere os campos que estão entre “%” e depois apague o símbolo de “%”. Não adicione essa linha!)

 cluster name = %NomedoseuCluster%;  
 node 1 admin conninfo = 'dbname=%NomeDoSeuBancoMaster% host=%IPDaSuaMáquinaMaster% user=%UsuarioDoSeuBancoMaster% password=%SenhaDoSeuBancoMaster%;  
 node 2 admin conninfo = 'dbname=%NomeDoSeuBancoSlave% host=%IPDaSuaMáquinaSlave% user=%UsuarioDoSeuBancoSlave% password=%SenhaDoSeuBancoSlave%;  
 subscribe set (id=1, provider=1, receiver=2, forward=yes);  

NO MEU ESTUDO DE CASO FICOU ASSIM

Arquivo subscribe

Salve o arquivo com o nome “Subscribe”, copie esse arquivo e cole dentro da pasta “bin” do PostgreSQL.


Ex.: C:\Arquivos de programas\PostgreSQL\8.4\bin

Adicionar na pasta bin.
Feito isso agora vamos criar a replicação:
Abra o Prompt de Comando (cmd) (para sistemas que possuem UAC – Controle de Conta de Usuário abra o Prompt de Comando (cmd) no modo administrador. Ex.: Botão direito do Mouse abrir como administrador).
Sistemas sem UAC – Controle de Conta de Usuário


Abrindo promtp.
Sistemas com UAC – Controle de Conta de Usuário

Sistemas com UAC - COntrole de Usuario
Aberto o Prompt digite “cd\” não digite as aspas e depois navegue até a pasta utilizando: cd C:\Arquivos de programas\PostgreSQL\8.4\bin se não der certo veja o caminho que seu PostgreSQL está instalado.
Adicionar legenda
Feito isso digite o seguinte comando:

slonik Subscribe.txt

Feito isso não aparecera nenhuma mensagem.
Pronto cluster de replicação criado na máquina Slave, o cluster de cada máquina só precisa ser criado uma vez, agora vamos iniciar o Slony nas máquinas.

6.   Iniciando o Slony-I.

Faça o mesmo procedimento tanto na máquina Master como na Slave

Abra o Prompt de Comando (cmd) (para sistemas que possuem UAC – Controle de Conta de Usuário abra o Prompt de Comando (cmd) no modo administrador. Ex.: Botão direito do Mouse abrir como administrador).
Sistemas sem UAC – Controle de Conta de Usuário

Sistemas com UAC - COntrole de Usuario

Adicionar legenda
Aberto o Prompt digite “cd\” não digite as aspas e depois navegue até a pasta utilizando: cd C:\Arquivos de programas\PostgreSQL\8.4\bin se não der certo veja o caminho que seu PostgreSQL está instalado.

Adicionar legenda
Feito isso digite o seguinte comando:
slon %NomeDoSeuCluster% “dbname=%NomeDoSeuBanco% user=%NomeDoUsuarioDoSeuBanco% password=%SenhaDoSeuBanco%
Na minha Máquina Master e na Slave ficou assim, (pois eu utilizei o mesmo nome do banco tanto para a Máquina Master como para a Slave).

Adicionar legenda
Feito isso aparecera as seguintes mensagens:
Máquina Master.
Máquina Slave
Pronto agora é só fazer alguma alteração no banco Master para ver se replicou corretamente, lembrando que não deve fechar o Prompt pois para fazer a replicação o Slony tem que estar executando. A primeira replicação demora alguns segundos basta esperar, caso utilize functions, triggers ou rules crie elas apenas no banco Master pois apenas as alterações necessitam ser replicadas.



Tutorial Criado por Samuel Coelho de Sá – facebook.com/samuel.scsa
Técnico em Informática CTF-UFPI, Estudante de Análise e Desenvolvimento de Sistemas - IFPI, Guadalupe/Floriano –PI

(Parte I)Replicação utilizando Slony 2.0.2, PostgreSQL 8.4 e Windows XP SP3 (x86)

Replicação utilizando Slony 2.0.2, PostgreSQL 8.4 e Windows XP SP3 (x86)
Testado nas seguintes plataformas
·         Windows XP (x86)
·         Windows 7 (x86 e x64)
·         Windows 2008 Server R2 Enterprise (x86 e x64)
Link para o Slony-I (+- 166KB) 
Link para o PostgreSQL 8.4 (x86) (+- 42 MB) 
Instale o PostgreSQL 8.4 na máquina Master e na máquina Cliente.

1.   Configurando IPs nas máquinas

Para iniciar temos que colocar as máquinas Master e Slave se comunicando na rede para que o PostgreSQL possa identifica-los.
No meu caso estou utilizando IPV4 Classe C 192.168.11.0

Configuração Máquina Master

Configuração Maquina Slave


 2.   Criando Regras no Firewall


Clique no botão Iniciar, depois Painel de Controle e dê dois cliques no ícone do Firewall do Windows.

Abrindo Firewall


Abrindo Firewall parte 2
  
Agora vamos adicionar as regras para liberação da porta de conexão e da aplicação PostgreSQL que estão presentes na GUIA EXCEÇÕES faça isso no Master e no Slave.


Adicionar a Aplicação pgAdmin III


Adicionando a Porta 5432

Adicionando a porta 5432

 3.   Configurando a Rede do PostgreSQL 8.4


Navegue até a pasta DATA do PostgreSQL:
No meu caso se localiza aqui: C:\Arquivos de programas\PostgreSQL\8.4\data
Agora abra o arquivo pg_hba.conf com algum editor de texto que você utilize, faça isso no Master e no Slave. Ex: (notepad ++, bloco de notas do windows)


Abrindo arquivo pg_hba.conf
 Adicione as linhas responsáveis pelos IPs das máquinas Master e Slave e depois salve.



 #Master  
 host  all     all     192.168.11.1/32        md5  
 #Slave  
 host  all     all     192.168.11.2/32        md5  

Adicionando linhas ao arquivo pg_hba.conf

4.   Instalando o Slony-I


Descompacte o arquivo “slony-I-2.0.2R-pg84.rar” que você baixou, entre na pasta descompactada e copie a pasta “8.4”.
Copiando arquivos de configuração do Slony
Navegue até a pasta “C:\Arquivos de programas\PostgreSQL” e cole sobrescrevendo a pasta existente faça isso nas máquinas Master e Slave.
Sobrescrevendo a pasta

Volte novamente para pasta descompactada e copie apenas a pasta “share”, agora navegue até a unidade que o seu Sistema Operacional está instalado no meu caso a unidade “C:” crie uma pasta chamada “MinGW”, dentro da pasta MinGW crie outra pasta chamada “local”, dentro da pasta local crie outra pasta chamada “pgsql”, dentro da pasta pgsql cole a pasta “share” que você copiou anteriormente, esse procedimento serve para que o Slony procure os scripts sql para executar a replicação. Esse caminho é padrão do Slony. 
Pasta criada em C:\

Criando pasta Share
Abra o pgAdmin III e faça a seguinte configuração.

Clique em “Arquivo” e depois clique em “Opções...”

COnfiguração postgres para pasta share

Aberta as opções altere o “Caminho do Slony-I” selecionando a pasta “share” localizada na pasta “C:\Arquivos de programas\PostgreSQL\8.4”
Direcionando share para pasta criada em C:\
Ate aqui a configuração do Slony, Postgresql, e firewall do windows configurados. No próximo artigo a replicação do banco de dados Postgresql

Tutorial Criado por Samuel Coelho de Sá – facebook.com/samuel.scsa

Técnico em Informática CTF-UFPI, Estudante de Análise e Desenvolvimento de Sistemas - IFPI, Guadalupe/Floriano –PI


segunda-feira, 3 de junho de 2013

Criando um usuário no SGBD MySQL 5.0

Primeiramente pesquisei a existência de Roles no MySQL com o no PostgreSQL e SQL Server, ate o MySQL 5.0 não identifiquei a existência de Roles, assim apenas criando usuários e permissões.
Utilizei a interface MySQL Query Browser que mesmo com interface criasse em linha de comando, e para se criar um usuario utiliza-se da seguinte sintaxe:

GRANT
ON .
TO ''@'dominio' IDENTIFIED BY 'senha' 
WITH GRANT OPTION;

FLUSH PRIVILEGES;

Em uso:

GRANT all privileges
ON *.*
TO dba@localhost IDENTIFIED BY  'root';

FLUSH PRIVILEGES;

Onde o GRANT vai garantir os privilégios, e o 'all privileges' concede todos os privilégios a esse usuário, *.* diz respeito a todas as tabelas e possui a senha 'root', logo esse usuário 'dba' tem acesso a todos os bancos e assim pode fazer todas as funcionalidades do SGBD. Caso queira dar permissão desse usuário criar outros usuário adiciona logo apos a senha o comando WITH GRANT OPTION

O GRANT possui as seguintes opções de acesso:

·         ALL/ALL PRIVILEGES - Simboliza todos os privilégios abaixo;
·         ALTER - Permite alterar a estrutura de tabelas;
·         ALTER ROUTINE - Permite alterar e excluir stored procedures/functions;
·         CREATE - Permite criar banco de dados e tabelas;
·         CREATE ROUTINE - Permite criar stored procedures/functions;
·    CREATE TEMPORARY TABLES - Permite a criação de tabelas temporárias em expressões SQL que utilizam esse recurso;
·         CREATE USER - Permite criar e gerenciar usuários;
·         CREATE VIEW - Permite criar visões;
·         DELETE - Permite excluir informações;
·         DROP - Permite excluir estruturas (bases e tabelas);
·         EVENT - Permite criar event schedulers;
·         EXECUTE - Permite executar stored procedures;
·         FILE - Permite ler e escrever arquivos no sistema;
·         GRANT - Permite cadastrar seus privilégios para outros usuários;
·         INDEX - Permite o gerenciamento de índices;
·         INSERT - Permite inserir informações em tabelas;
·         LOCK TABLES - Permite bloquear tabelas;
·         PROCESS - Permite visualizar e finalizar processos do MySQL;
·         RELOAD - Permite recarregar bancos de dados;
·         REPLICATION CLIENT - Permite solicitar replicação;
·         REPLICATION SLAVE - Permite replicar suas informações;
·         SELECT - Permite consultas;
·         SHOW DATABASES - Permite visualizar todas as estruturas dos bancos existentes;
·         SHOW VIEW - Permite visualizar os códigos de criação de visões;
·         SHUTDOWN - Permite desligar o servidor MySQL;
·         SUPER - Permite configurar os dados do servidor MASTER (em caso de replicação);
·         TRIGGER - Permite criar e gerenciar triggers;
·         UPDATE - Permite alterar informações em tabelas;

·         USAGE - Permite utilizar comandos básicos.

  Após a execução de cada comando GRANT é necessário executar o comando FLUSH PRIVILEGES,onde tem a função de atualizar a lista de privilégios, que mudar/setar algum tipo de permissão no MySQL faz necessário o utilizar esse comando.

Para a visualizar qual permissão um determinado usuário possui utiliza:

SHOW GRANTS FOR dba@localhost;

Para a visualizar todos os usuários:

SELECT User FROM  mysql.user;

Para a negar a permissão a um determinado usuário utiliza-se do REVOKE:

REVOKE all privileges, grant option
FROM 'dba'@'localhost';

FLUSH PRIVILEGES;