Banco de Dados

Como criar um banco de dados e usuário e conceder permissões no MariaDB / MySQL

Olá, de forma bem resumida, neste post, você irá aprender a como criar um banco de dados, criar um usuário e também conceder permissões para esse usuário no MariaDB e também se aplica ao MySQL via console/shell.
Sem estender muito, vamos ao que interessa!

  • Acessando o SGBD (MariaDB), criando o Banco de Dados e um Usuário.

Para que voce possa se conectar ao gerenciador do banco de dados, use o comando:

sudo mysql -u root -p

Agora já conectado ao gerenciador, vamos criar o banco de dados:

CREATE DATABASE basededados;

Em seguida vamos criar o usuário e sua senha de acesso:

CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'senha';

Com isso, já temos um banco de dados com nome: basededados e um usuário com nome: usuario. Mas isso não concede ao usuário qualquer permissão em nenhuma base de dado. Se você tentar logar no gerenciador de banco de dados, você receberá uma mensagem de erro alegando que voce não tem acesso.

Existem algumas formas para que você possa conceder privilégios ao usuário. Vamos a eles:

  • Acessando o SGBD (MariaDB), criando o Banco de Dados e um Usuário.

Você pode conceder Todos os Privilégios para o usuário, algo como deixá-lo como um usuário ROOT no seu MySQL/MariaDB. Sinceramente isso não é recomendado, afinal, já temos o root do próprio gerenciador né?!
Mesmo assim, alguns irão querer saber como fazer isso, então lá vai. Já logado no shell do MySQL, digite:

GRANT ALL PRIVILEGES ON * . * TO 'usuario'@'localhost';

em seguida, recarregue as permissões do MySQL com o comando:

FLUSH PRIVILEGES;

Os asteriscos referem-se ao Banco de Dados e a Tabela respectivamente. Com o comando acima, voce permite o usuário, ler, editar, executar, criar, dropar.. Ou seja, ele poderá fazer tudo em todas as bases de dados e nas tabelas destas bases. Por isso recomendamos ter cuidado com essa permissão.

O mais correto é voce atribuir permissões específicas a cada usuário.

  • Concedendo permissões específicas para um usuário.

Como sugere, ao conceder uma permissão específica a um usuário, você terá mais controle no que este usuário será capaz de fazer no(s) banco(s) de dados ao qual ele terá acesso definido mediante as permissões atribuídas a ele.
O comando para conceder privilégios de forma bem específica é:

GRANT permissao ON basededados . tabela TO 'usuario'@'localhost';

Aqui está uma pequena lista de outras possíveis permissões que os usuários podem utilizar, você pode ver a lista completa aqui.

ALL PRIVILEGES- garante 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 aplicar mais de uma permissão a um usuário é só separar com uma vírgula. Por exemplo, vamos atribuir a um determinado usuário a permissão de UPDATE e DELETE:

GRANT UPDATE, DELETE ON * . * TO 'nome-do-usuario'@'localhost';
FLUSH PRIVILEGES;

Lembre-se de que a cada vez que você alterar uma permissão, o comando FLUSH PRIVILEGES deverá ser executado.

Simples não?!

Havendo dúvidas, deixe um comentário que o ajudaremos.

2 thoughts on “Como criar um banco de dados e usuário e conceder permissões no MariaDB / MySQL

  • Afonso Monteiro

    Olá, minha dúvida que procuro é exatamente ao contrário. Tenho um software comercial e gostaria de restringir o acesso a estrutura e aos dados após o termino de contrato ou, mesmo, quando um funcionário saí e o risco de divulgar para concorrentes desenvolverem uma migração do meu para um novo sistema, recuperando os dados.
    Minha pergunta é; existe como criar uma senha de acesso protegida de clonagem ?

    Agradeço a atenção e aguardo.
    Obrigado,

    Resposta
    • Olá Afonso!
      Sobre sua pergunta existem várias formas de se chegar ao resultado ao qual você busca, porém é necessário entender melhor seu cenário.
      Caso o servidor do software esteja instalado em cada cliente seu, o problema será a forma com que a conexão com o seu banco de dados é estabelecida, geralmente criam um arquivo de conexão ao banco de dados e neste arquivo deixam expostos as credenciais de acesso ao banco de dados.
      Uma forma para evitar isso é você usar drivers de acesso ao seu banco de dados, ou ter uma conexão criptografada.
      Na verdade o banco de dados geralmente é do cliente, o que é comercializado é apenas a concessão de uso do sistema mediante uma locação do sistema.
      Caso seus clientes tenham um acesso a internet que seja confiável, hoje recomendo você centralizar seu banco de dados em um servidor Cloud. Diversos clientes nossos optaram por isso, assim o acesso ao banco é um pouco mais restrito, por você tratar a conexão em um servidor e nele você podendo até mesmo ter um banco de dados que trate as informações de forma restritiva, ou seja, você pode ter um banco de dados para gerir certas informações e fazer uma relação deste banco com outras bases que poderão ser as bases de seus clientes.
      Como disse, há diversas formas, o certo é conversar direito sobre o que você tem como cenário bem como também, esclarecermos melhor o que você busca, para que aí possamos chegar a uma forma correta para seu caso.

      Envie seu numero de telefone por meio de uma resposta que farei contato!

      Resposta

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.