Introdução ao MySQL
No fórum do Viva o Linux tenho percebido diversas perguntas sobre o MySQL, dúvidas sobre conexão, direitos de usuários, dentre outros detalhes básicos. Se você não conhece nada ou quase nada sobre o MySQL, chegou a hora de aprender um pouco mais sobre ele!
Parte 2: Armazenamento e criação
Entendendo alguns métodos de funcionamento.
Nome: MyISAM
Suporte a índices: SIM
Suporte a transações: NÃO
Tipos de dados não suportados: -
Nível de bloqueio: TABELA
Nome: InnoDB
Suporte a índices: SIM
Suporte a transações: SIM (AICD)
Tipos de dados não suportados: -
Nível de bloqueio: LINHA
Nome: MEMORY
Suporte a índices: NÃO
Suporte a transações: NÃO
Tipos de dados não suportados: BLOB e TEXT
Nível de bloqueio: TABELA
Nome: BDB
Suporte a índices: SIM
Suporte a transações: SIM
Tipos de dados não suportados: -
Nível de bloqueio: PÁGINA (blocos de 8mb)
Existem ainda o EXAMPLE, ARCHIVE, CSV e BLACKHOLE.
# mysql -p
Enter password:
Ao olharmos quais as bases existentes podemos encontrar:
mysql> SHOW DATABASES;
Vamos criar um banco novo e atribuir um usuário:
mysql> CREATE DATABASE minha_base;
mysql> USE minha_base;
mysql> GRANT ALL PRIVILEGES ON base.* TO usuario@'localhost' IDENTIFIED BY 'senha';
Parece simples, mas em três linhas temos que tomar cuidado extremo e já vemos algumas das inúmeras ferramentas do MySQL, veja:
A primeira linha indica criação do novo banco, a segunda ativa a base criada ou desejada e a terceira cria um novo usuário com direitos:
Veremos mais sobre o grant na página 5.
Vejamos se foi criada:
mysql> SHOW DATABASES;
mysql> RENAME DATABASE minha_base TO joaozinho;
mysql> SHOW DATABASES;
mysql> DROP DATABASE joaozinho;
mysql> SHOW DATABASES;
mysql> CREATE DATABASE minha_base;
MyISAM
O MyISAM é o mecanismo padrão do MySQL, é o mecanismo que apresenta os melhores resultados. Seu método de armazenamento é muito rápido, sem restrições de uso, que inclui todos os recursos do MySQL exceto o suporte à transações.Nome: MyISAM
Suporte a índices: SIM
Suporte a transações: NÃO
Tipos de dados não suportados: -
Nível de bloqueio: TABELA
InnoDB
Apesar do MyISAM ser o que apresenta os melhores resultados, é o InnoDB que é recomendado para grandes e complexos bancos de dados, pois permite o uso de transações com propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade).Nome: InnoDB
Suporte a índices: SIM
Suporte a transações: SIM (AICD)
Tipos de dados não suportados: -
Nível de bloqueio: LINHA
MEMORY (HEAP)
O armazenamento das informações do Memory é na memória RAM da máquina que o hospeda. Seu uso é indicado para dados temporários (imagine se acaba a carga do no-break!!!).Nome: MEMORY
Suporte a índices: NÃO
Suporte a transações: NÃO
Tipos de dados não suportados: BLOB e TEXT
Nível de bloqueio: TABELA
BerkeleyDB
Seu armazenamento é baseado na geração de um HASH que é armazenado com cada registro inserido no banco de dados, funcionando como uma espécie de chave primária de registros.Nome: BDB
Suporte a índices: SIM
Suporte a transações: SIM
Tipos de dados não suportados: -
Nível de bloqueio: PÁGINA (blocos de 8mb)
Existem ainda o EXAMPLE, ARCHIVE, CSV e BLACKHOLE.
Criando um banco de dados
Depois de tanta história vamos ao que interessa, o primeiro passo é conectarmos ao mysql e criarmos um banco de dados:# mysql -p
Enter password:
Ao olharmos quais as bases existentes podemos encontrar:
mysql> SHOW DATABASES;
+----------------------------+ | Database | +----------------------------+ | information_schema | | mysql | +----------------------------+A base mysql é onde ficam todos os parâmetros do MySQL, inclusive usuários e senhas, já a base information_schema fornece a informação das estruturas dos bancos de dados locais.
Vamos criar um banco novo e atribuir um usuário:
mysql> CREATE DATABASE minha_base;
mysql> USE minha_base;
mysql> GRANT ALL PRIVILEGES ON base.* TO usuario@'localhost' IDENTIFIED BY 'senha';
Parece simples, mas em três linhas temos que tomar cuidado extremo e já vemos algumas das inúmeras ferramentas do MySQL, veja:
A primeira linha indica criação do novo banco, a segunda ativa a base criada ou desejada e a terceira cria um novo usuário com direitos:
- grant - atribui.
- all privileges - todos os privilégios (ALTER, CREATE, DELETE, DROP, EVENT, EXECUTE, ...).
- on base.* - no banco "base" e em todas as suas tabelas.
- to teste@'localhost' - para o usuário "teste" (nesse caso ele já cria automaticamente o usuário) em localhost, aqui você poderia alterar por um ip ou range de rede, caso a conexão possa ocorrer de qualquer local você pode usar o parâmetro '%'.
- identified by 'senha' - requer essa determinada senha para realizar conexão.
Veremos mais sobre o grant na página 5.
Vejamos se foi criada:
mysql> SHOW DATABASES;
+----------------------------+ | Database | +----------------------------+ | information_schema | | minha_base | | mysql | +----------------------------+Para renomear o banco:
mysql> RENAME DATABASE minha_base TO joaozinho;
mysql> SHOW DATABASES;
+------------------------+ | Database | +------------------------+ | information_schema | | joaozinho | | mysql | +------------------------+Para excluir:
mysql> DROP DATABASE joaozinho;
mysql> SHOW DATABASES;
+------------------------+ | Database | +------------------------+ | information_schema | | mysql | +------------------------+Vamos criar a base novamente para que possamos trabalhar:
mysql> CREATE DATABASE minha_base;
Ainda não li tudo, porém, estou ancioso para poder chegar em casa e ler com calma, já esta impresso :)
Show de bola velinho, não conheço nada de Banco de Dados, e isso ai, já irá ser uma bela porta de entrada,
Parabéns, é isso ae, 10!
Abraços