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!

[ Hits: 80.626 ]

Por: Marcos Miras em 24/09/2008


Armazenamento e criação



Entendendo alguns métodos de funcionamento.

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;

Página anterior     Próxima página

Páginas do artigo
   1. O software
   2. Armazenamento e criação
   3. Criando tabela e inserindo, atualizando e excluindo dados
   4. Manipulando a tabela
   5. Permissões
   6. Segurança e configuração
   7. Conclusão
Outros artigos deste autor

Integridade dos arquivos do sistema

PhpPgAdmin e PhpMyAdmin

Ruby + Rails + Gem + Mongrel Cluster + Apache + MySQL n0 Red Hat EL

Comunity ENTerprise Operating System, o CentOS

Leitura recomendada

Replicação em banco de dados MySQL

Sincronização segura entre bancos de dados MySQL utilizando SJA

Sqlite Manager - Plugin do Firefox para criação e manipulação SQL

OcoMon 2.0RC6 no OpenSUSE 11.2 com PHP5 + MySQL5 + Apache2 com correção de acentuação

Amarok: migrando de SQLite para MySQL

  
Comentários
[1] Comentário enviado por maran em 24/09/2008 - 09:23h

WoW fala ai Marcos, tudo na paz?
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

[2] Comentário enviado por marcosmiras em 24/09/2008 - 09:32h

Tudo tranquilo Maran, obrigado pelo comentário e o que precisar estamos aí!

[]'s
Marcos Miras

[3] Comentário enviado por JLAUDIRT em 24/09/2008 - 10:03h

Infelizmente ainda estou preso ao window por ter de utilizar o delphi para desenvolver aplicativos para os meus clientes.
Estou estudando o mysql e percebi que ele nao aceita muitos selects (uns dentro dos outros) por exemplo:

"select table1.campo1,table1.campo2,(select table2.campo2 from table2 where table2.campo1 = table1.campo1) as descricao from table1 order by campo1;"


Qual seria a solução para este tipo de select?

[4] Comentário enviado por jose.freitas.rj em 24/09/2008 - 11:56h

pessoal sou novo no linux e uso fedora 8 e mexo um pouco com mysql e postgresql. com o postgresql consigo fazer qualquer maquina da rede acessar meu banco de dados, já com o mysql não sei fazer por que ainda não encontrei nenhum tutorial explicando isso. alguém sabe configurar o mysql no fedora 8 pra ser acessado por qualquer maquina da rede?
abraços...

[5] Comentário enviado por marcosmiras em 24/09/2008 - 11:59h

jfreitas23,
Releia a página 5 desse artigo:
http://www.vivaolinux.com.br/artigo/Introducao-ao-MySQL/?pagina=5

Que você vai encontrar como fazer o que deseja!

[]'s
Marcos Miras

[6] Comentário enviado por jose.freitas.rj em 24/09/2008 - 13:25h

marcos, show de bola!!! aieuaiueiaueiua...
funcionou!!!
valeu pela ajuda!!!
simples e eficaz!!!
valeu pela dica!!!
FIQUE COM DEUS!!!

[7] Comentário enviado por joaomc em 24/09/2008 - 13:28h

Lembrem-se: Multithreads *não* é o mesmo que uso de mais do que um processador.

[8] Comentário enviado por f_Candido em 24/09/2008 - 16:26h

Muito Bom. Parabéns.
Sem comentários.


Abraços

[9] Comentário enviado por andre_asn em 24/09/2008 - 17:13h

Gostei muito do seu artigo mas tive um probleminha uso o debian 4.0 e logo de cara deu este :

download@MATRIX:~$ su
Password:
MATRIX:/home/download# apt-get mysql mysql-server mysql-client
E: Operação mysql inválida

Mudando um pouco o comando para instalar da este outro erro :

MATRIX:/home/download# apt-get install mysql mysql-server mysql-client
Lendo lista de pacotes... Pronto
Construindo árvore de dependências... Pronto
E: Impossível achar pacote mysql
MATRIX:/home/download#

[10] Comentário enviado por grandmaster em 24/09/2008 - 18:21h

Parabéns, ficou realmente bem legal

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br


[11] Comentário enviado por marcosmiras em 24/09/2008 - 21:53h

@andre_asn: Você deve adicionar o repositório correto! Dê uma lida nesse link http://www.howtoforge.com/mysql4.1-and-php4-on-debian-etch

@f_Candido: Muito obrigado!

@grandmaster: Muito obrigado!

[]'s
Marcos Miras.

[12] Comentário enviado por andre_asn em 24/09/2008 - 22:03h

Boa noite Marcos Miras mas ja instalei o repositório mas da sempre o mesmo problema:

download@MATRIX:~$ su
Password:
MATRIX:/home/download# apt-get mysql mysql-server mysql-client
E: Operação mysql inválida
MATRIX:/home/download#

[13] Comentário enviado por slacklex em 24/09/2008 - 22:55h

Show de bola, amanhã imprimo no serviço... :-)

[14] Comentário enviado por marcosmiras em 25/09/2008 - 09:46h

@andre_asn: Houve um erro de digitação no artigo, o comando correto é:
apt-get install mysql mysql-server mysql-client
Faltou o "install", vou pedir para a equipe de moderação corrigir!

@slacklex: Obrigado por seu comentário!

[]'s
Marcos Miras.

[15] Comentário enviado por andre_asn em 25/09/2008 - 09:56h

Bom dia apenas informando que não deu certo ainda ja estou com o source.list com o abaixo:

#
#deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main

#deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main

deb http://ftp.br.debian.org/debian/ etch main
deb-src http://ftp.br.debian.org/debian/ etch main

deb http://security.debian.org/">http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/">http://security.debian.org/ etch/updates main contrib

deb http://mirrors.kernel.org/debian etch main contrib non-free
deb-src http://mirrors.kernel.org/debian etch main contrib non-free
deb http://security.debian.org etch/updates main contrib non-free
deb-src http://security.debian.org etch/updates main contrib non-free
deb http://www.debian-multimedia.org etch main

deb http://www.debian-multimedia.org etch main

Quando dou o resto do comando:

Next we open /etc/apt/preferences and specify that apt should use the debian.mytso.net repository with priority over the default Debian repositories:

vi /etc/apt/preferences

Diz que não tenho permissão para adicionar mesmo usando o comando root

[16] Comentário enviado por brunocontin em 26/09/2008 - 08:53h

Show de bola, poderia ter uma continuidade rsss, Pois o material ficou muito bem explicado.

[17] Comentário enviado por fredcrs em 26/09/2008 - 08:55h

show de bola
+favoritos
+10

[18] Comentário enviado por marcosmiras em 26/09/2008 - 09:26h

Obrigado pelos comentários!

[]'s
Marcos Miras

[19] Comentário enviado por patriques em 05/04/2009 - 00:31h

Ótimo artigo.. parabéns!
luz e paz...

[20] Comentário enviado por cesar em 18/08/2009 - 14:57h

Muito bom!

Parabéns.

[21] Comentário enviado por dgnonline em 23/11/2009 - 15:10h

Parabéns cara ;D

VIVA O LINUX

[22] Comentário enviado por francislei bowen em 11/03/2010 - 19:19h

Olá,tenho que criar um site em que sua estrutura é silmples mas....não tenhu um conhecimento bom com banco de dados,e uql seria o melhor a ser inserido no site....e como fazer a configuração se vcs, se disponibilizarem algum material disponivel eu agradeço muito muito mesmo....estou ferrado se não criar um quanto antes....desde já agradeço a todos pela atenção.
Francislei

[23] Comentário enviado por pais em 22/05/2011 - 17:02h

root@alencar-desktop:/home/sistema# groupadd mysql
root@alencar-desktop:/home/sistema# useradd -g mysql mysql
root@alencar-desktop:/home/sistema# cd /usr/local
root@alencar-desktop:/usr/local# tar -zxvf mysql-4.0.13.tar.gz
tar: mysql-4.0.13.tar.gz: Não é possível open: Arquivo ou diretório não encontrado
tar: Erro não é recuperável: saindo agora
tar: Child returned status 2
tar: Saindo com estado de falha devido a erros anteriores.
Eu já tinha tentado instalar antes destes comandos.
Cheguei até aquele ponto onde a tela fica azul e uma barra do lado direito vermelha cliko em ok mas a tela não envia nenhum resultado .
Todo comando de instalação ou de remoção da esta mensagem.

Impossível travar o diretório de administração (/var/lib/dpkg/), está em uso por outro processo?
Adriano: minha distro é o Kubuntu 10.4

[24] Comentário enviado por fndiaz em 11/04/2012 - 08:55h

Parabéns pela iniciativa!! Artigo mto bom!

[25] Comentário enviado por FOCADECKIII em 13/09/2012 - 20:35h

Boa noite!!
Sou novo aqui, já li e tentei trabalhar com bancos de dados de uma forma autodidática, mas devido a complexidade de alguns comando e regras a serem implementadas aos dados fica que meio confuso aprender. Alguém sabe um meio de aprender sobre banco de dados de uma forma mais simples?
Agredecido.

Att focadeckIII

[26] Comentário enviado por DebianWoman em 18/11/2012 - 18:57h

Muito bom!!!
Explicou melhor que o livro que estou lendo.
Muito obrigada pela sua contribuição.

Artigo excelente.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts