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!
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 dba@'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';
[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;"
[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...
[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#
[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!
[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
[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.