Ambiente Cliente-Server
Para que a comunicação entre o cliente e servidor ocorra de uma forma harmônica e segura, alguns requisitos básicos devem ser tomados.
Sempre que possível, cria um usuário para acesso a base de dados a ser criado e restringindo o acesso aos outras bases. É primordial configurar uma senha para cada usuário criado. Nunca e em nenhuma hipótese conceda acesso remoto ao usuário root ou administrativo ao seu SGBD
- Criando um usuário e senha para um acesso seguro.
Sintaxe comando em modo texto:
mysql -h <endereço-host> -u<usuário> -p <senha>
Eu particularmente prefiro deixar a senha em branco para coloca-la quando o sistema exigir. Porque colocando a senha na mesma linha de acesso ela fica legível, quando o sistema pedi a senha não é exibida.
Vamos a criação do novo usuário. Você deverá estar logado com um usuário com acesso administrativo no shell do Mysql.
Sintaxe comando em modo texto:
mysql>CREATE USER 'nome_novo_usuário'@'tipo acesso_SGBD' IDENTIFIED BY 'senha novo_usuário';
Isso ficaria assim para o usuário ‘teste‘ com acesso ‘local‘ SGDB e senha de acesso teste@123456.
mysql>CREATE USER 'teste'@'localhost' IDENTIFIED BY 'teste@123456';
Caso fossemos permitir o acesso remoto de qualquer lugar do usuário ‘teste’ ficaria assim.
mysql>CREATE USER 'teste'@'%' IDENTIFIED BY 'teste@123456';
E se o usuário ‘teste’ fosse acessar de uma host especifico, como exemplo, do IP 192.168.1.130, nossa query ficaria assim.
mysql>CREATE USER 'teste'@'192.168.1.130 ou o nome da maquina' IDENTIFIED BY 'teste@123456';
Até gora só criamos o usuário, ele ainda não tem nenhuma permissão para usar o SGBD, na verdade ele nem conseguiria logar.
- Concedendo Permissões ao Usuário
As permissões são bem flexíveis, portanto é muito importante que saibam o que estão fazendo. Sempre tente dar as permissões exata para cada usuário, assim você dificulta que imprevisto e que coisas indesejáveis ocorram.
Sintaxe comando em modo texto:
GRANT ALL PRIVILEGES ON <banco_dados> . <nome_tabelas> TO 'usuario'@'local';
Concedendo total privilégios ao usuário ‘teste@localhost‘.
GRANT ALL PRIVILEGES ON * . * TO 'teste@'localhost';
Os asteriscos referem-se a base de dados e as tabelas respectivamente. Após o “@” você especifica de onde o usuário poderá logar.
Concedendo privilégios a base de dados ‘cep’ e todas as suas tabelas ao usuário ‘teste@localhost‘.
GRANT ALL PRIVILEGES ON cep.* TO 'teste'@'localhost';
Para restringir o acesso a tabelas na base de dados ‘cep’ , é só especifica o nome da tabela no lugar do asterisco, a tabela não especificada ficaria restritas.
- Como conceder permissões de usuário diferentes.
Aqui está uma pequena lista de outras possíveis permissões comuns que os usuários podem utilizar.- ALL PRIVILEGES- como vimos anteriormente, isso daria a um usuário do MySQL todo o acesso a uma determinada base de dados (ou se nenhuma base de dados for selecionada, todo o sistema);
- CREATE- permite criar novas tabelas ou bases de dados;
- DROP- permite deletar tableas ou bases de dados
- DELETE- permite deletar linhas das tabelas
- INSERT- permite inserir linhas nas tabelas
- SELECT- permite utilizar o comando Select para ler bases de dados;
- UPDATE- permite atualizar linhas das tabelas;
- GRANT OPTION- permite conceder ou revogar privilégios de outros usuários;
- Para dar uma permissão a um usuário específico, você pode utilizar esta estrutura:
Sintaxe comando em modo texto:
GRANT <tipo_permissão> ON <nome_basedados>.<nome_tabela> TO ‘<nome_usuário>’@'local’
Para que as permissões sejam atualizadas imediatamente o seguinte comando deve ser executado.
mysql>FLUSH PRIVILEGES;
Revogando as Permissões
Se você precisar revogar uma permissão, a estrutura é quase idêntica a concedê-la:
Sintaxe comando em modo texto:
REVOKE <tipo permissão> ON <base dados>.<nome tabela> FROM ‘<nome_usuário>’@‘<local>’;
Deletando Um Usuário
Assim como você pode deletar bases de dados com o DROP, você pode utilizar o DROP para excluir um usuário completamente:
Sintaxe comando em modo texto:
DROP USER ‘demo’@‘localhost’;
Testando o Usuário Criado
Para testar seu novo usuário, faça logout digitando
quit
Faça login de volta com este comando no terminal:
mysql -u <nome usuário> -p
Bem esse é uma dica com as principais query para uma segurança razoável em sua base de dados e tabelas e acesso ao seu servidor de SGBD.
Mais sobre o assunto:
Fonte: