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: 82.580 ]

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

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

PhpPgAdmin e PhpMyAdmin

Comunity ENTerprise Operating System, o CentOS

Integridade dos arquivos do sistema

Leitura recomendada

MariaDB + phpMyAdmin no Ubuntu 12.04 LTS

Gerenciando banco de dados com MySQL (parte 2)

Instalando o MySQL no Slackware

Resolva Problemas com o MySQL Workbench no Linux Mint 21.1

Configurando Apache + MySQL + PHP no Slackware

  
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