Você está na página 1de 39

Banco de Dados II

Mecanismos de Proteo

Conceito:
Vamos aprender os principais comandos e aes de mecanismos de
proteo. Por exemplo como realizar um backup, restore, etc.

Backup (dump):
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 diretrio(pasta) do binrio
do MySQL.
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 verso do MySQL de acordo com a sua.

-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 verso do MySQL de acordo com a sua.

Sintaxe:
Mysqldump[.exe]
-u<usurio>
-p<senha>
-h<host da base>
-port<porta de conexo>
--database <nome da base> - DEPRECATED
--databases <nome da base> [base2] [base3]
--all-databases
> Para onde enviar o arquivo de dump junto com
seu nome
7

Exemplos:
-De uma base de dados:

mysqldump -uroot -proot --databases BD2 >


BD2.sql
mysqldump -uroot -proot BD2 > BD2.sql

-De uma base e quais tabelas:


mysqldump -uroot -proot --database BD2
professor > BD2.sql

mysqldump -uroot -proot BD2 professor teste >


BD2.sql

-De vrias bases:


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

10

Restore:
Para restaurar o backup (dump) dos dados da
base, tabela e seus registros, utilizamos dois
comandos:

- Pelo prompt do DOS


- De dentro do MySQL
11

Exemplo:

-Pelo prompt do DOS no mesmo diretrio 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

Backup e Restore phpMyAdmin

Vamos realizar agora junto com o professor o


passo passo para realizar o backup e restore
utilizando o phpMyAdmin.

14

Recuperar banco de dados:


A melhor maneira de recuperar um banco de
dados tendo sempre um backup (dump)
atualizado do mesmo. Porm, em algumas
situaes, podemos no ter esse cenrio por
motivos diversos. Sendo assim tem-se a opo
de utilizar ferramentas do prprio MySQL para
tentar ao mximo resolver algum problema.
15

Check Table
Faz manuteno a nvel de tabela da base de
dados. Onde pode-se verificar, reparar, otimizar
ou analisar.

16

Sintaxe
CHECK TABLE tabela [,tabela 2] [QUICK FAST CHANGED MEDIUM
EXTENDED];
-

QUICK: No realiza a varredura nas linhas por links incorretos;

FAST: Apenas verifica tabelas que no foram fechadas


propriamente;

CHANGED: Apenas verifica tabelas que foram alteradas desde a


ltima verificao ou que no tenham sidos fechadas
propriamente;

MEDIUM: Verifica linhas com os links deletados so vlidos


calculando o checksum para cada linha est correto;

EXTENDED: Realiza uma completa verificao em todas as


chaves. Com isto verifica se a tabela est 100% consistente
porm o processo que leva mais tempo.

17

Exemplo

18

19

20

21

Mysql Check
Faz a manuteno da base de dados e da tabela
conforme os parmetros informados
automaticamente. Este comando deve ser
executado pelo mesmo diretrio do mysqldump
em um prompt de comando do Windows.

22

Sintaxe
Mysqlcheck[.exe] [parmetros] [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 verificao encontrar erros nas


tabelas/base de dados repara automaticamente;

--check: Verifica tabelas para encontrar erros;

--check-only-changed: O mesmo que --check porm


somente naquelas que alteraram.
23

--databases: Verifica todas as tabelas da base de


dados informada depois dessa opo;

--extended: Analisa as tabelas da base de dados


sendo assegura que as mesmas estaro 100%
consistentes;

--fast: Verifica apenas aquelas que no foram


fechadas corretamente;

--force: Continua a verificao mesmo se


encontrar algum erro inesperado;

--medium-check: Igualmente ao --extended


porm garante apenas 99,99%.

24

--optimize: Otimiza as tabelas elevando a sua


performance;

--quick: No realiza a varredura nas linhas por


links incorretos;

--repair: Repara quase que todos os erros


econtrados. Mesmo processo do --auto-repair;

25

Exemplo

26

innodb_force_recovery
Normalmente ao utilizar o Store Engine InnoDB
ele mesmo se encarrega de realizar a verificao
da consistncia da base de dados e arrum-lo
automaticamente. Vamos ver a seguir caso esse
processo no funcione, em casos raros, como
forar o InnoDB a realizar este processo.
Lembrando que nem sempre tem-se a
resoluo do problema.
27

Passo passo de como proceder:


1)

Pare o servio do MySQL;

2)

Configure, no Windows, o arquivo my.ini incluindo a opo


innodb_force_recovery= ao nmero desejado na seo [mysqld].

Onde nmero:

0 - Valor padro, 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 aconteam;

3 SRV_FORCE_NO_TRX_UNDO : No executa transaes de rollback depois do


recovery;

4 SRV_FORCE_NO_IBUF_MERGE : Previne de inserir operaes de merge no


buffer do banco de dados. Este valor pode causar danos ao banco de dados;

5 SRV_FORCE_NO_UNDO_LOG_SCAN : No visualize os logs da base de dados


antes de iniciar o banco de dados. Este valor tambm pode corromper a base;

6 SRV_FORCE_NO_LOG_REDO : No permite que a base de dados faa o rollforward quando o banco inicializar deixando as pginas do banco em modo 28
obsoleto. Essa opo tambm pode corromper a base.

3) Salve o arquivo my.ini;


4) Inicialize o servio do MySQL.

29

Segurana

30

CREATE USER

Podemos criar vrios usurios alm do root.


Onde cada um deles podem ter mais ou menos
privilgios ao acesso ao banco de dados.

31

Sintaxe
CREATE USER user_specification [,
user_specification] ...
user_specification:
user [ identified_option ]

identified_option: {
IDENTIFIED BY 'auth_string'
| IDENTIFIED BY PASSWORD 'hash_string'
}
32

Exemplo
CREATE USER fulano@localhost;

CREATE USER beltrano@localhost IDENTIFIED


123456;

33

GRANT ALL PRIVILEGES

O CREATE USER apenas crie o usurio e define a


senha. Posteriormente a criao devemos
conceder os privilgios que o mesmo ter ao
acessar o banco de dados.

34

Exemplo 2
GRANT ALL PRIVILEGES ON bd2.* TO fulano@localhost;
GRANT CREATE PRIVILEGES ON bd2.aluno TO
fulano@localhost;

FLUSH PRIVILEGES;

35

Exemplo
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

REVOKE PRIVILEGES

O REVOKE retira algum ou alguns privilgios que


o usurio tenha.

37

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 2
REVOKE ALL PRIVILEGES ON bd2.* FROM fulano@localhost;

REVOKE CREATE PRIVILEGES ON bd2.aluno FROM


fulano@localhost;
FLUSH PRIVILEGES;

39