Para começar devemos nos conectar com o banco de dados, no Linux podemos utilizar o comando mysql:

mysql -p

Este comando abre a ferramenta de linha de comando. O parâmetro -p serve para a senha ser pedida. Por padrão se o usuário não for informado, o nome de usuário que está “logado” vai ser utilizado como login. Para “entrar” como outro usuário podemos utilizar o parâmetro -u.

mysql -u rodrigo -p

Uma vez na linha de comando podemos executar os comando SQL de criação de usuários:

CREATE USER 'novousuario'@'localhost' IDENTIFIED BY 'password';

Onde “novousuario” é o usuário que queremos criar, password é a senha deste usuário e “localhost” é a parte da origem de onde o usuário tem permissão para conectar ao banco. Pode ser colocado um “%” para permitir acesso de qualquer origem(embora possa ser um pouco inseguro) e também pode ser utilizado o ip de origem. Ex.:

CREATE USER 'novousuario'@'%' IDENTIFIED BY 'password'; 
CREATE USER 'novousuario'@'192.168.1.84' IDENTIFIED BY 'password';

Para remover um um usuário utilizamos o comando ‘DROP USER’ utilizando o mesmo mecanismo de origem da criação de usuário.

DROP USER 'usuario'@'localhost';

Com o usuário criado, este ainda não tem acesso a nenhum banco de dados, então devemos conceder permissão de acesso aos banco de dados, vejamos um exemplo:

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

O comando acima concede permissão total ao usuário “novousuario”. Vamos entender um pouco melhor as partes deste comando:

GRANT [tipo de permissão] ON [nome da base de dados].[nome da tabela] TO '[nome do usuário]'@'[origem'];

A opção “tipo de permissão” informa quais operações que o usuário poderá executar no banco, ele pode aceitar as seguintes opções:

  • ALL PRIVILEGES – Como mostrado no exemplo anterior, esta opção dá acesso total a um banco de dados ou a todo o sistema se nenhum banco de dados for selecionado.
  • CREATE – permite criar novas tabelas ou bases de dados
  • DROP – permite deletar tabelas 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

Na opção “nome da base de dados” e “nome da tabela” é onde informamos a qual banco de dados e tabela queremos permitir o acesso do “tipo de permissão”. Podemos substitui-los por “*” para simbolizar todos. Por exemplo se colocarmos “sistema.*” estaremos dando ao usuário permissão a todas as tabelas do banco de dados “sistema”, se utilizarmos “sistema.produtos” estaremos dando permissão somente a tabela “produtos”. Se utilizarmos “*.*” estaremos dando permissão a todos os banco de dados e a todas as tabelas.

As opções “nome do usuário” e “origem” funcionam com o mesmo mecanismo da criação de usuários.

Uma vez finalizadas as permissões é sempre bom recarregar todos os privilégios com o comando:

FLUSH PRIVILEGES;

Caso seja desejar remover alguma permissão devemos utilizar o comando REVOKE

REVOKE [tipo de permissão] ON [nome da base de dados].[nome da tabela] FROM '[nome do usuário]'@'[origem]';

Vamos agora a alguns exemplos de permissão que podem ser concedidas.

GRANT SELECT , INSERT ON sistema.* TO 'rodrigo'@'localhost';

Concede permissão ao usuário “rodrigo” conectado a partir de “localhost” de executar os comando “select” e “insert” em todas as tabelas do banco “sistema”.

GRANT ALL PRIVILEGES ON sistema.produtos TO 'rodrigo'@'192.168.1.85';

Concede permissão ao usuário “rodrigo” conectado a partir do ip “192.168.1.85” executar todos os comando na tabela “produtos” do banco “sistemas”.

GRANT GRANT OPTION ON sistema.* TO 'rodrigo'@'localhost';

Concede permissão ao usuário “rodrigo” de conceder permissão a outros usuários.

Para verificar os privilégios de um determinado usuário podemos utilizar o comando:

show grants for rodrigo;

Era isso T+