O acesso a bancos de dados é uma tarefa fundamental para o gerenciamento de servidores e a manutenção de aplicações web.
MySQL é um dos sistemas de gerenciamento de banco de dados (DBMS) mais comuns e poderosos. Como administrador de banco de dados, você gerencia informações críticas, e a senha root do MySQL desempenha um papel crucial para garantir a segurança e a integridade desses dados.
Em alguns momentos, você pode perder ou esquecer a senha root do MySQL. Isso pode acontecer por diversos motivos, desde circunstâncias imprevistas até mudanças na equipe ou simples erros humanos. Nesses casos, é essencial saber como redefinir a senha root e recuperar o acesso ao banco de dados.
Neste artigo, apresentamos métodos e ferramentas para ajudar você a redefinir a senha root do MySQL e restaurar o controle total sobre o seu banco de dados. Abordaremos diferentes abordagens, desde o uso de ferramentas oficiais do MySQL, como mysqladmin e mysqld_safe, até a edição de arquivos de configuração e a realização de alterações no sistema.
Também discutiremos precauções importantes para ajudar a proteger o seu banco de dados e evitar que a senha root seja perdida no futuro. Isso inclui o uso de senhas fortes, a limitação do acesso ao banco de dados apenas aos usuários necessários e a realização de backups regulares para minimizar riscos.
Portanto, se você precisa redefinir a senha root do MySQL, abaixo estão instruções detalhadas e recomendações para ajudar você a recuperar o acesso e retomar o gerenciamento do seu banco de dados MySQL.
O MySQL não utiliza PAM, e a senha SSH não funcionará. A senha root é definida durante a instalação do servidor de banco de dados, na etapa de criação das tabelas de privilégios.
Se, após uma tentativa de login, você receber o erro ERROR 1045: Access denied for user 'root'@'localhost' em vez de uma mensagem de boas-vindas, será necessário redefinir a senha root.
Para redefinir a senha root no MySQL 8, é preciso seguir um procedimento simples. Este método é igualmente adequado para MySQL e MariaDB, pois são totalmente compatíveis e utilizam os mesmos comandos.
No Ubuntu, você pode redefinir a senha root do MySQL usando os mesmos métodos do Debian. Pode haver uma pequena diferença no CentOS 7, que indicaremos na seção correspondente abaixo.
Se você também estiver fazendo a limpeza de contas de usuários, confira How to Properly Delete a MySQL User, que aborda a verificação e revogação de permissões e o uso do comando DROP USER, ajudando a remover acessos desnecessários após a restauração dos privilégios de root.
Este é um método bastante comum devido à sua simplicidade. A seguir, apresentamos um plano passo a passo para essa operação:
service mysqld stop
mysqld --skip-grant-tables&
O e comercial no final permite executar o serviço em segundo plano, de modo que ele não ocupe uma janela de terminal separada.
Como as tabelas de privilégios não estão carregadas, não é necessário inserir uma senha:
mysql -u root
Cada comando enviado ao banco de dados deve terminar com ponto e vírgula. Se a consulta não for concluída, o MySQL aguardará a continuação do comando. Você pode simplesmente adicionar um ponto e vírgula caso ele tenha sido esquecido na nova linha.
FLUSH PRIVILEGES;
A resposta deve ser: Query OK, 0 rows affected.
Para definir uma nova senha root no MySQL, no Ubuntu e Debian, utilize:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
Se essa consulta não funcionar, tente:
UPDATE `mysql`.`user` SET `password`=password('PASSWORD') WHERE `user`='root';
Ou:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('PASSWORD');
No CentOS 7, você pode redefinir a senha root do MySQL com o comando:
UPDATE `mysql`.`user` SET `authentication_string`=password('PASSWORD') WHERE `user`='root';
Se for executado com sucesso, você verá a resposta: Query OK, 0 rows affected.
A senha pode até ser um valor vazio, mas, nesse caso, você perderá a capacidade de se conectar ao servidor por qualquer outro meio que não seja a linha de comando. A alteração da senha entra em vigor imediatamente após a execução do comando. Você pode verificá-la, por exemplo, conectando-se pelo phpMyAdmin se nenhum valor vazio tiver sido definido.
quit;
A resposta deve ser Bye, e você retornará ao terminal normal.
service mysqld start
A redefinição da senha do superusuário do MySQL no Windows é semelhante ao procedimento para redefinir a senha root em sistemas Linux. As diferenças podem estar apenas no processo de localização e inicialização do próprio serviço de banco de dados.
A seguir, apresentamos um guia passo a passo para redefinir a senha do superusuário do banco de dados no Windows.
Há uma diferença dependendo de qual banco de dados está instalado. Para verificar, execute:
Para MySQL:
sc qc "mysql"
Para MariaDB:
sc qc "mariadb"
Se o banco de dados não estiver instalado, você verá a mensagem informando que o serviço não existe. Caso contrário, verá informações básicas sobre o MySQL ou o MariaDB.
Se a variável %PATH% não estiver definida, vá até a pasta que contém o arquivo executável do serviço de banco de dados. Você pode encontrar o caminho na saída do comando sc qc, em "BINARY_PATH_NAME". No nosso caso, é C:\localhost\mariadb\bin\.
cd C:\localhost\mariadb\bin\
Para MySQL:
net stop mysql
Para MariaDB:
net stop mariadb
Use o comando start. Diferentemente do Linux, no Windows o e comercial no final do comando não funciona e, quando o serviço é iniciado, ele não permitirá a execução de outros comandos até que a sessão seja encerrada (CTRL+C).
Você pode usar o mesmo comando tanto para MySQL quanto para MariaDB.
mysqld --skip-grant-tables
mysql -u root -p
Digite a senha em branco e você verá a mensagem de boas-vindas padrão. Agora, é necessário inserir os comandos para o servidor de banco de dados.
FLUSH PRIVILEGES;
Sem esse comando inicial, você pode receber um erro ao alterar a senha: "ERROR 1290: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement."
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
Observação: se o comando não funcionar, tente as opções do Passo 5 das instruções para sistemas Linux.
Feche a janela do Prompt de Comando com a versão temporária do banco de dados em execução ou pressione CTRL+C.
Para MySQL:
net start mysql
Para MariaDB:
net start mariadb
Redefinir a senha root do MySQL é uma habilidade importante para administradores de banco de dados. Neste artigo, analisamos vários métodos e ferramentas para redefinir a senha root e recuperar o controle total sobre o banco de dados MySQL gerenciado.
Em conclusão, seguem alguns pontos-chave sobre a segurança de bancos de dados:
Utilize senhas complexas que combinem letras, números e caracteres especiais e altere-as regularmente.
Limite o acesso ao banco de dados apenas aos usuários essenciais para minimizar o risco de acesso não autorizado.
Atualize o sistema MySQL regularmente para eliminar vulnerabilidades conhecidas e receber os patches de segurança mais recentes.
Realize backups regulares do banco de dados. Essa é a sua garantia em caso de perda de dados ou falhas no sistema. Desenvolva uma estratégia de backup, defina a frequência e os métodos de criação dos backups e verifique a capacidade de restauração para garantir a recuperação dos dados.
Lembre-se da importância do treinamento e do desenvolvimento contínuo na administração de bancos de dados. Mantenha-se informado sobre as últimas tendências, novos recursos e ferramentas do MySQL. Utilize recursos educacionais, participe de seminários e conferências e troque experiências com profissionais experientes da área. Atualizar constantemente seus conhecimentos e habilidades ajudará você a gerenciar o banco de dados de forma eficaz e a resolver problemas emergentes.
Redefinir a senha root do MySQL é uma tarefa crítica que exige atenção e conhecimento. No entanto, com os métodos e recomendações apresentados, você pode realizar essa tarefa e recuperar o controle completo sobre o seu banco de dados MySQL. Lembre-se de garantir a segurança, criar backups e continuar aprendendo, e o seu trabalho com MySQL será bem-sucedido e seguro.