Banco de Dados I
Aula 20
Agenda
• Notícia
• Comentários sobre os artigos trabalhados
• Prática no MySQL
Texto 1. Gerenciamento de Usuários
e Controle de Acessos do MySQL
• Controles de acessos do MySQL
• Criação de usuários e gerenciamento de seus
privilégios.
Limitação de Acesso
• O MySQL possui um mecanismo que permite limitar
o acesso de um usuário a apenas um banco, tabela
ou coluna, além de poder controlar o acesso de
acordo com o host a partir de onde está sendo feita a
conexão com o servidor.
• Pode-se ainda, conceder privilégios diferentes para
cada host de onde o usuário possa estabelecer a
conexão. Assim, é possível que determinados
comandos possam ser executados somente quando o
usuário estiver em um host específico, por exemplo
o mesmo host do servidor MySQL (localhost).
Sintaxe do Comando
• . A sintáxe resumida do comando GRANT é
exibida a seguir:
• GRANT priv [(colunas)] [, priv
[(colunas)]] ...
ON {*.* | db.* | db.tabela}
TO usuario [IDENTIFIED BY 'senha']
[, usuario [IDENTIFIED BY 'senha']] ...
Exemplo
• No exemplo a seguir é criado um usuário com o nome
teste que pode se conectar somente do host onde o
servidor está em execução (localhost), o usuário só
poderá fazer SELECT nas colunas nome e idade da
tabela pessoa, que se encontra no banco de dados rh. A
senha do usuário é 12345.
• mysql>GRANT SELECT (nome, idade) ON
rh.pessoa TO teste@localhost
IDENTIFIED BY "12345";
• Para listar os privilégios deste usuário utilize o comando:
• mysql>SHOW GRANTS FOR teste@localhost;
Dicas
• Remover ou alterar a senha dos usuários:
• Anônimo e root na instalação
Texto 2. Implementando Integridade
Referencial no MySQL
• Para adicionarmos restrições de integridade
(constraints) às chaves estrangeiras, é necessário
criar as tabelas como InnoDB.
Tipos de Restrições
• CASCADE: ao se remover um registro da tabela
referenciada pela chave estrangeira os registros
relacionados àquele removido serão eliminados em
todas as tabelas relacionadas.
• RESTRICT:não permite a remoção de registros
que possuam relacionamentos em outras tabelas.
• SET NULL e SET DEFAULT. atribuem os valores
DEFAULT ou NULL para as chaves estrangeiras
cujos registros relacionados foram excluídos.
Exemplo
• CREATE TABLE aluno (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome CHAR(30) NOT NULL
) TYPE=InnoDB;
• CREATE TABLE cursos (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome CHAR(30) NOT NULL
) TYPE=InnoDB;
• CREATE TABLE notas (
aluno_id INT NOT NULL,
cursos_id INT NOT NULL,
date DATE NOT NULL,
nota DOUBLE NOT NULL,
PRIMARY KEY(aluno_id, cursos_id, date),
INDEX i2 (cursos_id),
FOREIGN KEY (aluno_id) REFERENCES aluno(id) ON DELETE CASCADE,
FOREIGN KEY (cursos_id) REFERENCES cursos(id) ON DELETE
RESTRICT
) TYPE=InnoDB;
Explicação
• A tabela cursos que contém as disciplinas ministradas e a
tabela notas com os pontos dos alunos em todos os cursos
freqüentados por eles.
• No modelo é possível que um curso possua várias avaliações
em datas distintas. Neste caso, foram criadas as tabelas como
tipo InnoDB (TYPE=InnoDB), para que as regras de
integridade sejam respeitadas. As regras definidas foram: um
CASCADE para aluno, isto é, se for removido um registro da
tabela de aluno, todas as suas notas serão removidas
automaticamente.
• No caso da tabela de cursos, não será possível remover um
curso que possua notas cadastradas para ele.
• Além da restrição ON DELETE, o InnoDB permite também o
ON UPDATE, que aplica as restrições no caso de
atualizações dos campos ralacionados entre as tabelas.
Texto 3. Trabalhando com os Vários
Tipos de Tabelas do MySQL
• No MySQL é possível escolher o tipo da tabela
no momento da criação da mesma.
• O formato de armazenamento dos dados, bem
como alguns recursos do banco de dados são
dependentes do tipo de tabela escolhido.
• A definição do tipo de tabela é feito através do
comando CREATE TABLE, como mostrado a
seguir:
MyISAM:
• Este é o tipo de tabela padrão do MySQL. Caso
não seja informado o tipo de tabela, o MySQL
criará a tabela do tipo MyISAM.
• Problemas:
• Lock de tabela inteira
• Instável, não transacional ( não possui Commit
e Rollback)
• Vantagem:
• Desempenho
InnoDB:
• O InnoDB é um tipo de tabela transacional, desenvolvido
pela InnoDBase Oy. A partir da versão 4.0 do MySQL ele
passa a ser parte integrada das distribuições do MySQL.
• Transacional,
• Integridade referencial, com implementação dos
constraints SET NULL, SET DEFAULT, RESTRICT
e CASCADE;
• Ferramenta de backup on-line (ferramenta comercial,
não GPL);
• Lock de registro, como Oracle, DB2, etc;
• Níveis de isolamento;
• Armazenamentos de dados em tablespace.
Tablespace
• Tablespace é um termo em língua inglesa que
designa uma sub-divisão lógica de um banco de
dados utilizado para agrupar estruturas lógicas
relacionadas.
• As tablespaces apenas especificam a localização de
armazenamento do banco de dados e são
armazenadas fisicamente em datafiles, que alocam
imediatamente o espaço especificado na sua criação.
• Exemplo:
• A primeira tablespace criada pelo ORACLE é a
System.
Tablespace no Postgresql 8
• Local no sistema de arquivos onde serão armazenados os
objetos;
• Melhoria no gerenciamento de discos;
• Selecionar os sistemas de arquivos que irá armazenar as
informações (isso inclui esquemas, tabelas e índices
posso escolher uma determinada PASTA no servidor a
qual será utilizada para armazenar uma determinada
informação);
• No PostgreSQL, os objetos como tabela e índices são
arquivos sem extensão e nomeados numericamente –
OID – Object ID).
Utilidades
• Tuning: Podemos criar uma tablespace chamada
table_index a qual está vinculada ao segundo HD e
nesta tablespace armazenaremos TODOS os índices
de nosso banco de dados.
• Com isso, o acesso à informação é mais rápido e
diminui a sobrecarga do HD (e todo o conjunto
lógico/físico envolvido) para ler dados e índices;
• Gerenciamento de Espaço: Através deste
conceito é possível adicionar um outro HD e criar
uma nova tablespace para que as novas tabelas e
índices sejam colocadas neste novo HD com o
intuito de não sofrer com problemas de espaço em
disco.
Prática
• No MySQL
▫ 1. Criar tabelas do vistas no texto com restrições
de integridade;
▫ 2. Criar Expecificar permissões PARA
User1/Localhost com o comando GRANT.
Download

Banco de Dados I