Como consultar os usuários ativos, adicionar novos e definir suas senhas ou como criar um login sem senha. Estabeleça uma data de expiração para a senha ou para expirar no primeiro acesso. Veja como remover usuários, trocar a senha do usuário logado ou qualquer outro cadastrado. Mude os acessos atuais e defina permissões específicas para cada usuário com cada banco de dados e tabela. Remova permissões e consulte a tabela de privilégios disponíveis.
Adicionar usuário
Adicionar um usuário pode ser feito através do comando create user ou diretamente com o comando grant que será visto mais adiante.
Mysql
# Cria usuário andrei com a 'minha_senha' CREATE USER 'andrei'@'localhost' IDENTIFIED BY 'minha_senha'; # Cria usuário sem senha: CREATE USER 'andrei'@'localhost'; # Senha expira no primeiro acesso exigindo uma nova CREATE USER 'andrei'@'localhost' IDENTIFIED BY 'nova_senha' PASSWORD EXPIRE; # Utiliza o plugin de autenticação caching_sha2_password,
# define que a senha expira a cada 180 dias,
# habilita bloqueio de conta por 2 dias ao atingir
# 3 tentativas de login com senha incorreta CREATE USER 'andrei'@'localhost'
IDENTIFIED WITH caching_sha2_password BY 'minha_senha'
PASSWORD EXPIRE INTERVAL 180 DAY
FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
Nos exemplos deste artigo sempre que manipular usuários será considerado o contexto de maquina local, é isso que o @localhost faz. Par garantir o acesso remoto ao usuário substitua o localhost pelo IP desejado (andrei@192.168.0.55).
Remover usuário
Mysql
DROP USER 'andrei'@'localhost';
Listar usuários
Como exibir informações dos usuários, veja mais a frente sobre as permissões.
Mysql
# Todos usuários SELECT user FROM mysql.user; # Todos os usuários sem repetir SELECT DISTINCT User FROM mysql.user; # Usuários e os hosts com os quais podem se conectar SELECT user,host FROM mysql.user; # Usuários, os hosts e as senhas criptografadas SELECT user,host,password FROM mysql.user;
Trocar a senha
Mysql
# Troca a senha para o usuário logado SET PASSWORD = PASSWORD('nova_senha'); # Muda a senha de um usuário específico SET PASSWORD FOR 'andrei'@'localhost' = PASSWORD('nova_senha');
Listar privilégios
Use show grants para verificar as permissões.
Title
# Exibe privilégios de um usuário SHOW GRANTS FOR 'andrei'@'localhost'; # Exibe os privilégios do usuário atualmente logado SHOW GRANTS;
Conceder privilégios
O comando grant é responsável pela administração dos privilégios dados aos usuários.
Mysql
# Cria o usuário andrei com a 'minha senha' e
# concede acesso total ao banco de dados bd_loja GRANT ALL ON bd_loja.* TO 'andrei'@'localhost' IDENTIFIED BY 'minha_senha'; # Concede privilégio total para andrei
# em todas as tabelas do banco de dados
# bd_loja utilizando sua senha atual GRANT ALL ON bd_loja.* TO 'andrei'@'localhost'; # Concede somente SELECT para andrei na
# tabela clientes do banco de dados bd_loja GRANT SELECT ON bd_loja.clientes TO 'andrei'@'localhost';
Remover privilégios
O comando revoke remove as permissões do usuário.
Mysql
# Remove o privilégio INSERT em todos os bancos
# de dados e tabelas para o usuário andrei REVOKE INSERT ON *.* FROM 'andrei'@'localhost'; # Remove o privilégio DELETE no banco de dados
# bd_loja e suas tabelas para o usuário andrei REVOKE DELETE ON bd_loja.* FROM 'andrei'@'localhost'; # Remove todos os privilégios do usuário andrei REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'andrei'@'localhost';
Lista de privilégios
Lista de alguns dos privilégios que podem ser utilizados com o comando grant e revoke.
Privilégio
Coluna
Contexto
Veja todos os privilégios disponíveis aqui.