39
Banco de Dados II 1

BDII-Mecanismos de Proteção

Embed Size (px)

DESCRIPTION

banco de dados

Citation preview

Banco de Dados II

1

Mecanismos de Proteção

2

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

-De várias bases:

mysqldump -uroot -proot --databases BD1 BD2 > BD1_BD2.sql

10

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:

-Pelo prompt do DOS no mesmo diretório do mysqldump:

mysql -uroot –proot BD1 < BD1.sql

12

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

Exemplo

18

19

20

21

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

Exemplo

26

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

3) Salve o arquivo my.ini;4) Inicialize o serviço do MySQL.

29

Segurança

30

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

O REVOKE retira algum ou alguns privilégios que o usuário tenha.

REVOKE PRIVILEGES

37

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

REVOKE ALL PRIVILEGES ON bd2.* FROM ‘fulano’@’localhost’;

REVOKE CREATE PRIVILEGES ON bd2.aluno FROM ‘fulano’@’localhost’;

FLUSH PRIVILEGES;

39

Exemplo 2