Mysql – Gerenciando Usuários

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

  1. 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.

  2. 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.

  3. 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;
  4. 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:

MySQL User Account Management
DigitalOcean – Etel Sverdlov 

Deixe uma resposta