Download - BDII-Mecanismos de Proteção
Vamos aprender os principais comandos e ações de mecanismos de proteção. Por exemplo como realizar um backup, restore, etc.
Conceito:
3
Para realizarmos o backup (dump) dos dados da base, tabela e seus registros, utilizamos o comando mysqldump. Onde este deve ser chamado de fora do MySQL, ou seja, pelo prompt do DOS até o diretório(pasta) do binário do MySQL.
Backup (dump):
4
-No caso do Xampp:
C:\xampp\mysql\bin
-No caso do MySQL instalado individualmente:
C:\Arquivos de Programa\MySQL\mysqlX.X.XX\bin
Onde X é a versão do MySQL de acordo com a sua.
5
-No caso do Xampp:
C:\xampp\mysql\bin
-No caso do MySQL instalado individualmente:
C:\Arquivos de Programa\MySQL\mysqlX.X.XX\bin
Onde X é a versão do MySQL de acordo com a sua.
6
Mysqldump[.exe]
-u<usuário> -p<senha> -h<host da base>-port<porta de conexão>--database <nome da base> - DEPRECATED--databases <nome da base> [base2] [base3]--all-databases
> Para onde enviar o arquivo de dump junto com seu nome
Sintaxe:
7
-De uma base de dados:
mysqldump -uroot -proot --databases BD2 > BD2.sql
mysqldump -uroot -proot BD2 > BD2.sql
Exemplos:
8
-De uma base e quais tabelas:
mysqldump -uroot -proot --database BD2 professor > BD2.sql
mysqldump -uroot -proot BD2 professor teste > BD2.sql
9
Para restaurar o backup (dump) dos dados da base, tabela e seus registros, utilizamos dois comandos:
- Pelo prompt do DOS
- De dentro do MySQL
Restore:
11
Exemplo:
- De dentro do MySQL:
Primeiro selecione a base e depois:
source <caminho do arquivo>;
Mysql> source c:\bd2.sql;
13
Vamos realizar agora junto com o professor o passo à passo para realizar o backup e restoreutilizando o phpMyAdmin.
Backup e Restore phpMyAdmin
14
A melhor maneira de recuperar um banco de dados é tendo sempre um backup (dump) atualizado do mesmo. Porém, em algumas situações, podemos não ter esse cenário por motivos diversos. Sendo assim tem-se a opção de utilizar ferramentas do próprio MySQL para tentar ao máximo resolver algum problema.
Recuperar banco de dados:
15
Faz manutenção a nível de tabela da base de dados. Onde pode-se verificar, reparar, otimizar ou analisar.
Check Table
16
CHECK TABLE tabela [,tabela 2] [QUICK FAST CHANGED MEDIUM EXTENDED];
- QUICK: Não realiza a varredura nas linhas por links incorretos;
- FAST: Apenas verifica tabelas que não foram fechadas propriamente;
- CHANGED: Apenas verifica tabelas que foram alteradas desde a última verificação ou que não tenham sidos fechadas propriamente;
- MEDIUM: Verifica linhas com os links deletados são válidos calculando o checksum para cada linha está correto;
- EXTENDED: Realiza uma completa verificação em todas as chaves. Com isto verifica se a tabela está 100% consistente porém é o processo que leva mais tempo.
Sintaxe
17
Faz a manutenção da base de dados e da tabela conforme os parâmetros informados automaticamente. Este comando deve ser executado pelo mesmo diretório do mysqldumpem um prompt de comando do Windows.
Mysql Check
22
Mysqlcheck[.exe] [parâmetros] [db_name [tbl_name]]
- --all-databases: Verifica todas as tabelas e em todas as bases de dados;
- --analyze: Analisa as tabelas;
- --auto_repair: Se a verificação encontrar erros nas tabelas/base de dados repara automaticamente;
- --check: Verifica tabelas para encontrar erros;
- --check-only-changed: O mesmo que --check porém somente naquelas que alteraram.
Sintaxe
23
- --databases: Verifica todas as tabelas da base de dados informada depois dessa opção;
- --extended: Analisa as tabelas da base de dados sendo assegura que as mesmas estarão 100% consistentes;
- --fast: Verifica apenas aquelas que não foram fechadas corretamente;
- --force: Continua a verificação mesmo se encontrar algum erro inesperado;
- --medium-check: Igualmente ao --extendedporém garante apenas 99,99%.
24
- --optimize: Otimiza as tabelas elevando a sua performance;
- --quick: Não realiza a varredura nas linhas por links incorretos;
- --repair: Repara quase que todos os erros econtrados. Mesmo processo do --auto-repair;
25
Normalmente ao utilizar o Store Engine InnoDBele mesmo se encarrega de realizar a verificação da consistência da base de dados e arrumá-lo automaticamente. Vamos ver a seguir caso esse processo não funcione, em casos raros, como forçar o InnoDB a realizar este processo. Lembrando que nem sempre tem-se a resolução do problema.
27
innodb_force_recovery
Passo à passo de como proceder:
1) Pare o serviço do MySQL;
2) Configure, no Windows, o arquivo my.ini incluindo a opção “innodb_force_recovery=” ao número desejado na seção “[mysqld]”.
Onde número:
• 0 - Valor padrão, ou seja, inicia normalmente sem recovery;
• 1 - SRV_FORCE_IGNORE_CORRUPT : O MySQL vai rodar ignorando qualquer erro.
• 2 – SRV_FORCE_NO_BACKGROUND : Previne que a thread principal do MySQL execute prevenindo que erros maiores aconteçam;
• 3 – SRV_FORCE_NO_TRX_UNDO : Não executa transações de rollback depois do recovery;
• 4 – SRV_FORCE_NO_IBUF_MERGE : Previne de inserir operações de merge no buffer do banco de dados. Este valor pode causar danos ao banco de dados;
• 5 – SRV_FORCE_NO_UNDO_LOG_SCAN : Não visualize os logs da base de dados antes de iniciar o banco de dados. Este valor também pode corromper a base;
• 6 – SRV_FORCE_NO_LOG_REDO : Não permite que a base de dados faça o roll-forward quando o banco inicializar deixando as páginas do banco em modo obsoleto. Essa opção também pode corromper a base.
28
Podemos criar vários usuários além do root. Onde cada um deles podem ter mais ou menos privilégios ao acesso ao banco de dados.
CREATE USER
31
CREATE USER user_specification [, user_specification] ...
user_specification:user [ identified_option ]
identified_option: {IDENTIFIED BY 'auth_string'
| IDENTIFIED BY PASSWORD 'hash_string'}
32
Sintaxe
CREATE USER ‘fulano’@’localhost’;
CREATE USER ‘beltrano’@’localhost’ IDENTIFIED ‘123456’;
33
Exemplo
O CREATE USER apenas crie o usuário e define a senha. Posteriormente a criação devemos conceder os privilégios que o mesmo terá ao acessar o banco de dados.
GRANT ALL PRIVILEGES
34
GRANT ALL PRIVILEGES ON bd2.* TO ‘fulano’@’localhost’;
GRANT CREATE PRIVILEGES ON bd2.aluno TO ‘fulano’@’localhost’;
FLUSH PRIVILEGES;
35
Exemplo 2
GRANT ALL PRIVILEGES ON *.* TO ‘fulano’@’localhost’;
GRANT CREATE PRIVILEGES ON *.* TO ‘fulano’@’localhost’;
GRANT DROP PRIVILEGES ON *.* TO ‘fulano’@’localhost’;
GRANT DELETE PRIVILEGES ON *.* TO ‘fulano’@’localhost’;
GRANT INSERT PRIVILEGES ON *.* TO ‘fulano’@’localhost’;
GRANT UPDATE PRIVILEGES ON *.* TO ‘fulano’@’localhost’;
GRANT SELECT, UPDATE PRIVILEGES ON *.* TO ‘beltrano’@’localhost’;
FLUSH PRIVILEGES;36
Exemplo
REVOKE ALL PRIVILEGES ON *.* FROM ‘fulano’@’localhost’;
REVOKE CREATE PRIVILEGES ON *.* FROM ‘fulano’@’localhost’;
REVOKE DROP PRIVILEGES ON *.* FROM ‘fulano’@’localhost’;
REVOKE DELETE PRIVILEGES ON *.* FROM ‘fulano’@’localhost’;
REVOKE INSERT PRIVILEGES ON *.* FROM ‘fulano’@’localhost’;
REVOKE UPDATE PRIVILEGES ON *.* FROM ‘fulano’@’localhost’;
REVOKE SELECT, UPDATE PRIVILEGES ON *.* FROM ‘beltrano’@’localhost’;
FLUSH PRIVILEGES;38
Exemplo