- 1 1. [Quick Answer] Lista de Comandos para Alteração de Senha de Usuário MySQL (Solução Mais Rápida)
- 2 2. Conceitos Básicos de Usuários e Hosts no MySQL (Prevenir Problemas “Travados” Comuns)
- 3 3. Procedimento recomendado: Alterar com segurança usando ALTER USER (Funciona para MySQL 8.0 / 5.7)
- 4 4. Diferenças entre MySQL 8.0 e 5.7
- 5 5. Recuperando uma senha root esquecida (Procedimento Focado em Segurança)
- 6 6. Erros Comuns e Soluções (Captura de Tráfego por Mensagem de Erro)
- 7 7. Operações de Segurança: Políticas de Senha e Melhores Práticas
- 8 8. FAQ (Perguntas Frequentes)
- 8.1 8.1 Q. O que acontece com sessões ativas após mudar a senha?
- 8.2 8.2 Q. Mudei a senha mas ainda não consigo fazer login
- 8.3 8.3 Q. Posso permitir que apenas um usuário específico altere senhas?
- 8.4 8.4 Q. O método é o mesmo no MariaDB?
- 8.5 8.5 P. Posso verificar o histórico de alterações de senha?
- 8.6 8.6 P. Posso recuperar usuários não-root com –skip-grant-tables?
- 9 9. Resumo
- 9.1 9.1 Use ALTER USER como o método padrão
- 9.2 9.2 Os usuários são gerenciados como “user@host”
- 9.3 9.3 Preste atenção aos plugins de autenticação no 8.0
- 9.4 9.4 Seja cuidadoso ao recuperar a senha root
- 9.5 9.5 A maioria dos erros tem causas claras
- 9.6 9.6 Na prática, o menor privilégio e o design operacional importam mais
1. [Quick Answer] Lista de Comandos para Alteração de Senha de Usuário MySQL (Solução Mais Rápida)
O comando básico para alterar a senha de um usuário no MySQL é ALTER USER.
Este método é recomendado no MySQL 5.7 e posteriores, e é usado da mesma forma no MySQL 8.0.
1.1 Sintaxe básica (mais usada)
ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword';
username: o nome de usuário alvo a ser atualizadolocalhost: o host cliente (uma conta MySQL é identificada por “nome de usuário + host”)newpassword: a nova senha
Após a execução, a alteração tem efeito imediato. Na maioria dos casos, FLUSH PRIVILEGES; não é necessário (ALTER USER atualiza automaticamente as tabelas de privilégios).
Armadilhas comuns
- Mesmo com o mesmo nome de usuário,
@'localhost'e@'%'são tratados como contas diferentes - Símbolos nas senhas devem ser colocados entre aspas simples
1.2 Alterando um usuário de acesso remoto (%)
ALTER USER 'username'@'%' IDENTIFIED BY 'newpassword';
% significa “qualquer host”.
É comumente usado em ambientes de nuvem ou para usuários que podem se conectar de fora.
Observações
- É mais seguro verificar antecipadamente com
SELECT User, Host FROM mysql.user; - Se você alterar a senha para o Host errado, não conseguirá fazer login
1.3 Alterar senha especificando o plugin de autenticação (importante no 8.0)
No MySQL 8.0, o plugin de autenticação padrão é caching_sha2_password.
Se você não conseguir conectar com clientes mais antigos, defina explicitamente o plugin.
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'newpassword';
mysql_native_password: método legado (prioriza compatibilidade)caching_sha2_password: padrão do MySQL 8.0 (recomendado)
Erros típicos
- PHP ou clientes mais antigos podem não suportar o plugin padrão do MySQL 8.0
- Decidir “não consigo fazer login” sem verificar o plugin de autenticação
1.4 Se você receber um erro de privilégio
Exemplo de erro:
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)
Neste caso, o usuário atualmente conectado não tem permissão para fazer a alteração.
Verifique:
SHOW GRANTS FOR CURRENT_USER();
Execute o comando como root ou como um usuário com privilégios suficientes.
1.5 Como verificar após a alteração
SELECT User, Host, plugin FROM mysql.user WHERE User='username';
- Verifique o plugin de autenticação através da coluna
plugin - A verificação mais confiável é realmente fazer login e confirmar a conectividade
1.6 O que acontece com sessões existentes
Após alterar uma senha:
- Novas conexões devem usar a nova senha
- Sessões existentes podem ser encerradas imediatamente, dependendo do ambiente
- Em produção, recomenda‑se fazer alterações fora do horário comercial
2. Conceitos Básicos de Usuários e Hosts no MySQL (Prevenir Problemas “Travados” Comuns)
No MySQL, um usuário não é identificado apenas por um “nome de usuário”. Em vez disso, ele é identificado pela combinação de “nome de usuário + host cliente (Host)”.
Se você não entender isso, pode se deparar com o problema clássico: “Mudei a senha, mas ainda não consigo fazer login.”
2.1 Um usuário é um par “user@host”
Exemplos:
'appuser'@'localhost''appuser'@'%''appuser'@'192.168.1.%'
Todos são tratados como contas diferentes.
Portanto, mesmo que você altere a senha para localhost, isso não afeta a conta %.
Comando de verificação:
SELECT User, Host FROM mysql.user ORDER BY User, Host;
Armadilhas comuns
- Não perceber que existem várias contas com o mesmo nome de usuário
- Você alterou a senha para
localhost, mas está realmente fazendo login via TCP (127.0.0.1)
2.2 localhost e 127.0.0.1 são tratados de forma diferente
No MySQL:
localhost→ conexão por socket UNIX (conexão interna local)127.0.0.1→ conexão TCP/IP
Dependendo do ambiente, uma conta diferente pode ser correspondida.
Verifique:
mysql -u username -p -h 127.0.0.1
Se você não conseguir fazer login com o acima, a conta @'127.0.0.1' pode não existir.
2.3 Verificar o usuário autenticado atualmente
É importante entender “qual conta você está autenticado”.
SELECT CURRENT_USER();
Isso exibe o “user@host” que foi realmente autenticado.
SELECT USER(); mostra as informações da solicitação de conexão, portanto pode não coincidir.
2.4 Verificar privilégios (SHOW GRANTS)
Se você não puder alterar uma senha, privilégios insuficientes podem ser a causa.
SHOW GRANTS FOR 'username'@'host';
Ou para o usuário atualmente conectado:
SHOW GRANTS FOR CURRENT_USER();
Privilégios mínimos necessários
ALTER USER- Ou
SYSTEM_USER(MySQL 8.0 e posteriores)
2.5 Padrões típicos de falha
- Você alterou a senha para o Host errado
- O plugin de autenticação difere (muito comum no 8.0)
- A conta de destino não existe inicialmente
Verifique se o usuário existe:
SELECT User, Host FROM mysql.user WHERE User='username';
Depois de entender este modelo, você pode evitar a maioria dos problemas relacionados à alteração de senha.
3. Procedimento recomendado: Alterar com segurança usando ALTER USER (Funciona para MySQL 8.0 / 5.7)
No MySQL 5.7 e posteriores, alterar senhas com ALTER USER é a abordagem padrão e recomendada.
Atualizações diretas como UPDATE mysql.user podem se comportar de forma diferente dependendo da versão e acarretar riscos de compatibilidade futura, portanto é melhor evitá-las.
3.1 Pré-verificações (Sempre confirmar antes de alterar)
Antes de alterar uma senha, confirme estes três itens.
① Confirmar o usuário e Host de destino
SELECT User, Host FROM mysql.user WHERE User='username';
- Verifique se existem várias contas com o mesmo nome de usuário
- Não confunda
localhostcom%
② Confirmar o plugin de autenticação atual (importante no 8.0)
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
caching_sha2_password(padrão do MySQL 8.0)mysql_native_password(plugin legado)
Algumas falhas de conexão são causadas pelo plugin de autenticação.
③ Confirmar o usuário autenticado atualmente
SELECT CURRENT_USER();
Para evitar erros de privilégio, execute os comandos como root ou como um usuário com privilégios adequados.
3.2 Executar ALTER USER (forma padrão)
ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
A alteração tem efeito imediato.
Na maioria dos casos, FLUSH PRIVILEGES; não é necessário.
Observações
- Se a política de senha (
validate_password) for violada, pode ocorrerERROR 1819 - Se a senha incluir caracteres especiais, sempre coloque-a entre aspas simples
3.3 Alterar especificando o plugin de autenticação (somente se necessário)
Se você estiver usando clientes mais antigos em um ambiente MySQL 8.0:
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';
Casos em que você deve alterá-lo:
- Não é possível conectar com clientes PHP antigos / MySQL antigos
- Um ambiente que não suporta
caching_sha2_password
Casos em que você NÃO deve alterá-lo:
- Se você já pode conectar sem problemas em um ambiente moderno (o plugin padrão é mais seguro)
3.4 Verificação pós-alteração
① Verificar o plugin de autenticação
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
② Verificar realmente fazendo login
mysql -u username -p
Sempre teste se você pode fazer login.
3.5 Impacto nas sessões existentes
Após alterar uma senha:
- Novas conexões → devem usar a nova senha
- Conexões existentes → podem permanecer dependendo do ambiente
- Produção → pode ser necessário reiniciar as conexões da aplicação
Erros comuns
- Não atualizar as credenciais de conexão da aplicação
- Senhas antigas ainda permanecendo em arquivos de configuração
3.6 Dicas operacionais seguras para produção
- Realize alterações fora do horário comercial
- Verifique os arquivos de configuração da aplicação com antecedência
- Execute o trabalho sem desconectar sua sessão SSH
- Ao mudar o root, assegure que você tem um método de recuperação pronto
4. Diferenças entre MySQL 8.0 e 5.7
A maior causa de problemas ao mudar senhas do MySQL é a diferença nos métodos de autenticação entre MySQL 8.0 e 5.7.
Em particular, muitos casos de “Eu mudei, mas não consigo fazer login” são causados por diferenças no plugin de autenticação.

Diferença de autenticação entre MySQL 5.7 e MySQL 8.0
4.1 Diferenças no plugin de autenticação padrão
| Version | Default authentication plugin |
|---|---|
| MySQL 5.7 | mysql_native_password |
| MySQL 8.0 | caching_sha2_password |
No MySQL 8.0, caching_sha2_password tornou‑se o padrão para maior segurança.
Entretanto, clientes mais antigos (versões antigas do PHP, conectores MySQL antigos, etc.) podem não suportá‑lo.
Como verificar:
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
Problemas comuns
- Clientes antigos não conseguem conectar a usuários criados no MySQL 8.0
- Mesmo que ocorra um erro, você não percebe que a causa raiz é o plugin de autenticação
4.2 Como mudar o plugin de autenticação para compatibilidade
Somente quando for necessário conectar a partir de um ambiente mais antigo, altere da seguinte forma:
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';
Depois de alterá‑lo, sempre execute um teste de conexão.
Observações
- Do ponto de vista de segurança,
caching_sha2_passwordé mais seguro - Não troque para o plugin legado desnecessariamente
- Se possível, atualizar o lado do cliente é preferível
4.3 UPDATE direto não é recomendado
No MySQL 5.7 e versões anteriores, métodos como o seguinte eram usados:
UPDATE mysql.user
SET authentication_string=PASSWORD('newpassword')
WHERE User='username';
FLUSH PRIVILEGES;
Entretanto, esta abordagem é:
- Altamente dependente da versão
- Sujeita a mudanças de especificação no 8.0
- Provavelmente será descontinuada no futuro
Regra geral: use ALTER USER
4.4 Diferenças de comportamento do plugin validate_password
No MySQL 5.7 e 8.0, recursos de política de senha (verificação de força) estão disponíveis por padrão.
Verifique:
SHOW VARIABLES LIKE 'validate_password%';
Se violar a política, você pode receber:
ERROR 1819 (HY000)
.
Como muitos ambientes 8.0 impõem linhas de base de segurança mais rígidas,
após atualizar do 5.7, você pode descobrir que alterações de senha não são mais aceitas devido a requisitos de política mais fortes.
4.5 Como verificar sua versão
Se você não tem certeza de qual versão está executando:
SELECT VERSION();
Se aplicar correções sem confirmar a versão, pode acabar usando o método errado
5. Recuperando uma senha root esquecida (Procedimento Focado em Segurança)
Se você esquecer a senha do usuário root do MySQL (administrador), não poderá fazer login normalmente.
Nesse caso, você deve desativar temporariamente as tabelas de privilégios e redefinir a senha. Contudo, esse procedimento traz riscos de segurança, portanto siga os passos cuidadosamente.
5.1 Confirme se você realmente precisa da senha root
Primeiro, verifique o seguinte:
- Se você tem privilégios
sudoao nível do SO - Se a autenticação
auth_socketestá habilitada (comum em sistemas baseados em Ubuntu)
Exemplo de verificação:
SELECT User, Host, plugin
FROM mysql.user
WHERE User='root';
Se o plugin for auth_socket, você pode conseguir fazer login como usuário root do SO.
sudo mysql
Se isso funcionar, você só precisa redefinir a senha.
5.2 Fluxo de recuperação (procedimento geral)
① Parar o servidor MySQL
sudo systemctl stop mysql
② Iniciar com tabelas de privilégios desativadas
sudo mysqld_safe --skip-grant-tables &
--skip-grant-tables desativa a autenticação.
Nesse estado, qualquer pessoa pode conectar, portanto conclua o procedimento rapidamente.
③ Conectar ao MySQL
mysql -u root
Você pode conectar sem senha.
④ Redefinir a senha root (método recomendado)
ALTER USER 'root'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
Importante
- NÃO use diretamente
UPDATE mysql.user - Use
ALTER USER(para compatibilidade de versão)
⑤ Reativar as tabelas de concessão
FLUSH PRIVILEGES;
⑥ Reiniciar o MySQL em modo normal
sudo systemctl restart mysql
Em seguida, verifique o login normal:
mysql -u root -p
5.3 Erros comuns
- Deixar
--skip-grant-tableshabilitado (risco grave de segurança) - Alterar acidentalmente o Host root
- Alterar o plugin de autenticação incorretamente e bloquear o acesso
5.4 Notas para ambientes de produção
- Sempre execute isso durante uma janela de manutenção em servidores públicos
- Mantenha sua sessão SSH ativa enquanto trabalha
- Crie um backup antecipadamente, se possível
A recuperação da senha root pode ser feita com segurança se executada cuidadosamente.
6. Erros Comuns e Soluções (Captura de Tráfego por Mensagem de Erro)
Vários erros típicos ocorrem ao alterar senhas do MySQL. A seguir, organizamos causas comuns e soluções por códigos de erro frequentemente pesquisados.
6.1 ERRO 1819 (A senha não atende aos requisitos da política)
Exemplo de erro:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
Causa
A senha falhou na validação de força imposta pelo plugin validate_password.
Verificar política atual
SHOW VARIABLES LIKE 'validate_password%';
Configurações importantes:
validate_password.lengthvalidate_password.policyvalidate_password.mixed_case_countvalidate_password.number_countvalidate_password.special_char_count
Solução ① (Recomendado): Use uma senha mais forte
- Pelo menos 12 caracteres
- Inclua letras maiúsculas, minúsculas, números e símbolos
- Evite palavras de dicionário
Solução ② (Relaxar a política temporariamente)
SET GLOBAL validate_password.policy = LOW;
Após concluir sua tarefa, recomenda-se restaurar a configuração original.
Erros comuns
- Deixar a política relaxada em produção
- Não perceber que alterar essa configuração requer privilégios SUPER
6.2 ERRO 1227 (Privilégios insuficientes)
Exemplo de erro:
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)
Causa
O usuário atual não possui o privilégio ALTER USER ou SYSTEM_USER.
Verificar privilégios
SHOW GRANTS FOR CURRENT_USER();
Solução
Execute o comando como root ou como um usuário com privilégios suficientes.
Se necessário:
GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;
Nota
- No MySQL 8.0, o privilégio
SYSTEM_USERtambém pode ser necessário - Siga o princípio do menor privilégio em produção
6.3 Não é possível fazer login após alterar a senha
Principais causas
- Host incorreto
- Incompatibilidade do plugin de autenticação
- Incompatibilidade do cliente
- Configuração da aplicação não atualizada
① Verificar Host
SELECT User, Host FROM mysql.user WHERE User='username';
② Verificar plugin de autenticação
SELECT plugin FROM mysql.user WHERE User='username';
③ Alterar plugin de autenticação (se necessário)
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';
④ Verificar configuração da aplicação
.envconfig.php- String de conexão (DSN)
Erros comuns
- Alterar o MySQL mas não atualizar a aplicação
- Não reiniciar contêineres em ambientes Docker
6.4 Ainda é possível fazer login com a senha antiga após a alteração
Normalmente, alterações feitas com ALTER USER entram em vigor imediatamente.
Causas possíveis:
- Você realmente alterou uma conta de Host diferente
- A conexão está apontando para outro servidor (réplica)
- Cache de sessão
Verifique:
SELECT CURRENT_USER();
É crítico confirmar com precisão tanto o servidor conectado quanto o usuário autenticado.
7. Operações de Segurança: Políticas de Senha e Melhores Práticas
Alterar uma senha não é uma tarefa única.
Nas operações do mundo real, você mantém a segurança combinando aplicação de força, design de privilégios e regras operacionais.
7.1 Usando o plugin validate_password
O MySQL fornece funcionalidade incorporada para impor a força da senha.
Verificar configurações atuais
SHOW VARIABLES LIKE 'validate_password%';
Principais parâmetros de configuração
validate_password.length(comprimento mínimo)validate_password.policy(LOW / MEDIUM / STRONG)validate_password.mixed_case_countvalidate_password.number_countvalidate_password.special_char_count
Exemplo de configuração (mínimo 12 caracteres, política MEDIUM)
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.policy = MEDIUM;
Nota
- Alterações GLOBAL podem ser redefinidas após uma reinicialização
- Para persistir as configurações, configure-as no arquivo de configuração (
my.cnf/my.ini)
7.2 Requisitos mínimos para senhas fortes
Padrões recomendados na prática:
- Pelo menos 12 caracteres
- Incluir maiúsculas, minúsculas, números e símbolos
- Evitar palavras de dicionário
- Não reutilizar em outros serviços
Exemplo:
X9v!pQ4z#Lm2
Exemplos a evitar
password123
mysql2025
companyname!
7.3 Mais importante que mudanças periódicas
Mais importante que “alterar a cada seis meses” é projetar sob a suposição de possível vazamento de credenciais.
① Separar usuários de aplicação
- Não use root em aplicações
- Crie usuários com o menor privilégio
Exemplo:
GRANT SELECT, INSERT, UPDATE ON dbname.* TO 'appuser'@'localhost';
② Minimizar privilégios (Princípio do Menor Privilégio)
Permita apenas as operações necessárias para limitar danos potenciais.
③ Usar auditoria e logs
Exemplo de verificação de log:
tail -f /var/log/mysql/mysql.log
O MySQL Enterprise também suporta plugins de auditoria.
7.4 Dicas operacionais para ambientes de produção
- Teste em staging antes de fazer alterações em produção
- Acompanhe o histórico de mudanças (Git ou documentação)
- Sempre execute um teste de conexão após alterações
- Mantenha sua sessão SSH ativa enquanto trabalha
7.5 Coisas que você nunca deve fazer
- Use a conta root em aplicações
- Codifique senhas diretamente no código fonte
- Desative
validate_passworde deixe assim - Deixe o servidor em execução com
--skip-grant-tables
Gerenciamento de senhas não é uma tarefa única, mas parte de um design operacional contínuo.
8. FAQ (Perguntas Frequentes)
8.1 Q. O que acontece com sessões ativas após mudar a senha?
A. Em princípio, novas conexões exigem a nova senha.
Para sessões existentes, elas podem ser terminadas imediatamente ou permanecer ativas, dependendo do ambiente e da configuração.
Na prática:
- Realize alterações fora do horário comercial em produção
- Reinicie a aplicação para atualizar as conexões
é recomendado.
8.2 Q. Mudei a senha mas ainda não consigo fazer login
As três causas mais comuns são:
- Host incorreto (
localhostvs%, etc.) - Incompatibilidade de plugin de autenticação (muito comum no 8.0)
- Configuração da aplicação não atualizada
Verifique com:
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
Preste atenção especial à coluna plugin.
8.3 Q. Posso permitir que apenas um usuário específico altere senhas?
Sim.
GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;
No MySQL 8.0, o privilégio SYSTEM_USER também pode ser necessário.
SHOW GRANTS FOR 'username'@'host';
Use isso para verificar privilégios.
8.4 Q. O método é o mesmo no MariaDB?
Basicamente, ALTER USER está disponível, mas:
- Plugins de autenticação
- Comportamento da política de senha
- Diferenças específicas de versão
podem diferir dependendo do ambiente.
Verifique com:
SELECT VERSION();
A edição Community do MySQL não fornece rastreamento de histórico de senhas integrado por padrão.
8.5 P. Posso verificar o histórico de alterações de senha?
Abordagens possíveis:
- Ativar log de auditoria
- Usar gerenciamento de log externo
- Rastrear histórico na documentação operacional
Exemplo:
tail -f /var/log/mysql/mysql.log
8.6 P. Posso recuperar usuários não-root com –skip-grant-tables?
Sim, mas isso cria um estado altamente perigoso.
Sempre retorne ao modo normal imediatamente após concluir o procedimento.
9. Resumo
Alterar uma senha do MySQL pode parecer simples, mas sem entender o modelo user@host, plugins de autenticação e design de privilégios, pode facilmente levar a problemas.
Os pontos principais deste artigo são:
9.1 Use ALTER USER como o método padrão
ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
- Método padrão no MySQL 5.7 e posterior
UPDATE mysql.userdireto não é recomendadoFLUSH PRIVILEGESgeralmente é desnecessário
9.2 Os usuários são gerenciados como “user@host”
localhoste%são contas diferentes- Múltiplas contas com o mesmo nome de usuário podem existir
- Verifique com
SELECT User, Host FROM mysql.user;
9.3 Preste atenção aos plugins de autenticação no 8.0
- Padrão 8.0:
caching_sha2_password - Compatibilidade legacy:
mysql_native_password - Se não puder conectar, verifique a coluna
pluginSELECT plugin FROM mysql.user WHERE User='username';
9.4 Seja cuidadoso ao recuperar a senha root
--skip-grant-tablesé uma medida temporária apenas- Sempre retorne ao modo normal após terminar
- Realize durante uma janela de manutenção em produção
9.5 A maioria dos erros tem causas claras
- ERROR 1819 → Violação de política de senha
- ERROR 1227 → Privilégios insuficientes
- Não pode fazer login → Incompatibilidade de host ou plugin de autenticação
9.6 Na prática, o menor privilégio e o design operacional importam mais
- Não use root em aplicações
- Crie usuários dedicados
- Imponga políticas de senhas fortes
- Sempre teste conexões após alterações
O gerenciamento de senhas do MySQL não é apenas sobre alterar um valor—é a base das operações seguras de banco de dados.
Escolha o método apropriado para seu ambiente e execute-o com cuidado.


