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

Por: Marcos Miras em 24/09/2008


Permissões



Chegamos a um ponto que eu estava ansioso para escrever, como disse no início vejo aqui no fórum diversas pessoas com esse problema. As permissões no MySQL são tão simples quanto no Linux.

Essas permissões vão definir em qual base e tabela é definida a permissão, qual o usuário, onde ele está e qual a senha dele. Para tal procedimento usaremos o grant.

Criando um usuário no MySQL

O comando "create user" é a forma mais rápida de criar um usuário e definir sua senha, porém não existe uma tratativa sobre os direitos desse novo usuário:

mysql> CREATE USER fulano IDENTIFIED BY 'senha';

Saia do prompt mysql e entre com o usuário novo:

# mysql -ufulano -p
mysql>

Você pode também excluir o usuário:

mysql> DROP USER fulano;

Direitos de acesso no MySQL

O grant possui as seguintes opções de acesso:
  • ALL/ALL PRIVILEGES - Simboliza todos os privilégios abaixo.
  • ALTER - Permite alterar a estrutura de tabelas.
  • ALTER ROUTINE - Permite alterar e excluir stored procedures / functions.
  • CREATE - Permite criar banco de dados e tabelas.
  • CREATE ROUTINE - Permite criar stored procedures / functions.
  • CREATE TEMPORARY TABLES - Permite a criação de tabelas temporárias em expressões SQL que utilizam esse recurso.
  • CREATE USER - Permite criar e gerenciar usuários.
  • CREATE VIEW - Permite criar visões.
  • DELETE - Permite excluir informações.
  • DROP - Permite excluir estruturas (bases e tabelas).
  • EVENT - Permite criar event schedulers.
  • EXECUTE - Permite executar stored procedures.
  • FILE - Permite ler e escrever arquivos no sistema.
  • GRANT - Permite cadastrar seus privilégios para outros usuários.
  • INDEX - Permite o gerenciamento de índices.
  • INSERT - Permite inserir informações em tabelas.
  • LOCK TABLES - Permite bloquear tabelas.
  • PROCESS - Permite visualizar e finalizar processos do MySQL.
  • RELOAD - Permite recarregar bancos de dados.
  • REPLICATION CLIENT - Permite solicitar replicação.
  • REPLICATION SLAVE - Permite replicar suas informações.
  • SELECT - Permite consultas.
  • SHOW DATABASES - Permite visualizar todas as estruturas dos bancos existentes
  • SHOW VIEW - Permite visualizar os códigos de criação de visões.
  • SHUTDOWN - Permite desligar o servidor MySQL.
  • SUPER - Permite configurar os dados do servidor MASTER (em caso de replicação).
  • TRIGGER - Permite criar e gerenciar triggers.
  • UPDATE - Permite alterar informações em tabelas.
  • USAGE - Permite utilizar comandos básicos.

A sintaxe do grant é a seguinte:

grant <privilégios> on <banco>.<tabela> to '<usuario>'@'<dominio>' identified by '<senha>'

Agora criaremos um usuário com os mesmos privilégios do root:

mysql> CREATE USER dba;
mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]'localhost' IDENTIFIED BY 'passworddba';

E um usuário para somente leitura:

mysql> CREATE USER estagiario;
mysql> GRANT SELECT ON minha_base.* TO 'estagiario'@'%' IDENTIFIED BY 'estag';

O parâmetro "%" representa qualquer domínio, ou seja, o usuário estagiário para consultar todas as tabelas de "minha_base" mediante a senha "estag". Caso você deseje consultar os privilégios do usuário poderemos utilizar o seguinte comando (repare que no campo de senha é gerado um hash, como explicado anteriormente):

mysql> SHOW GRANTS FOR 'estagiario'@'%';
GRANT SELECT ON `minha_base`.* TO 'estagiario'@'%'

Sempre que mudar/setar algum tipo de permissão no MySQL, o comando de atualiza a lista de privilégios faz-se necessário:

mysql> FLUSH PRIVILEGES;

Caso o estagiário esteja abusando com os "selects" da vida, podemos retirar os direitos de acesso com o comando REVOKE, veja:

mysql> REVOKE SELECT ON minha_base.* FROM 'estagiario'@'%';

Ainda se for necessário, podemos excluir ou alterar a senha desse usuário:

mysql> SET PASSWORD FOR 'estagiario' = PASSWORD('nova_senha');
mysql> DROP USER 'estagiario';

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

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

PhpPgAdmin e PhpMyAdmin

Comunity ENTerprise Operating System, o CentOS

Leitura recomendada

Store Procedures com Transaction no MySQL

MariaDB + phpMyAdmin no Ubuntu 12.04 LTS

Gambas2 e MySQL, aprofundando relações

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

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 :

[email protected]:~$ 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:

[email protected]:~$ 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

[email protected]:/home/sistema# groupadd mysql
[email protected]:/home/sistema# useradd -g mysql mysql
[email protected]:/home/sistema# cd /usr/local
[email protected]:/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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts