Pular para o conteúdo principal

Como alterar a senha do MySQL para usuários root e regulares

· Leitura de 3 minutos
Customer Care Engineer

Esqueceu a senha de root do MySQL? Não se preocupe, isso acontece até mesmo com administradores experientes. Neste artigo, explicaremos como redefinir a senha de root do MySQL para diferentes versões: MySQL 5.7 e MySQL 8.0+. Além disso, abordaremos como redefinir a senha para um usuário de banco de dados regular.

Para MariaDB, consulte nosso guia separado.

info

Root é o administrador principal do banco de dados. Eles têm acesso total a todos os dados e configurações. Se você perder essa senha, modificar certas configurações e executar alguns comandos não será mais possível.

Todas as operações serão realizadas pela linha de comando via SSH. Você pode encontrar instruções mais detalhadas sobre como conectar ao seu servidor usando este protocolo neste artigo.

Antes de prosseguir, verifique o conteúdo do arquivo /root/.my.cnf. Muitas vezes, ele contém a senha de root atual para acessar o MySQL.

Você pode testar a conexão usando o comando:

mysql -u root -p 

Em seguida, insira a senha do arquivo .my.cnf.

Se a senha não funcionar, siga as instruções abaixo.


Como redefinir a senha de root do MySQL

Passo 1: Parar o MySQL

Para redefinir a senha, você primeiro precisa parar o MySQL. Insira o seguinte comando:

  • Para Debian e Ubuntu:
systemctl stop mysql
  • Para CentOS/RockyLinux/AlmaLinux:
systemctl stop mysqld

Passo 2: Reiniciar o servidor em modo de segurança

  • Para Debian e Ubuntu:

Certifique-se de que o diretório de onde o MySQL será executado exista e tenha o proprietário apropriado:

mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/

Inicie o servidor MySQL sem controle de acesso:

mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &

Se o MySQL iniciar corretamente, você verá uma mensagem semelhante a:

2024-11-28T23:50:19.298141Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Para continuar trabalhando na linha de comando, pressione “Ctrl + C”.

  • Para CentOS/RockyLinux/AlmaLinux:
sudo -u mysql mysqld --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &

Passo 3: Conectar ao MySQL

 mysql --socket=/var/run/mysqld/mysqld.sock

Passo 4: Redefinir a senha

  • Para MySQL 5.7, execute os seguintes comandos sequencialmente:
FLUSH PRIVILEGES;

Para um usuário local:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NovaSenha';

Para um usuário de rede (se existir):

ALTER USER 'root'@'%' IDENTIFIED BY 'NovaSenha';

Em seguida:

FLUSH PRIVILEGES;

Substitua NovaSenha pela sua nova senha desejada.

info

'user'@'localhost' refere-se a um usuário local que se conecta via socket ou localhost. 'user'@'%' refere-se a um usuário de rede com acesso de qualquer endereço IP.

Você pode definir as mesmas senhas ou senhas diferentes para esses usuários. Se o usuário de rede não existir, o comando @'%' resultará em um erro.

Saia do MySQL usando o comando exit ou pressionando “Ctrl + D”.

  • Para MySQL 8.0+, execute os seguintes comandos:
FLUSH PRIVILEGES;

Para um usuário local:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NovaSenha';

Para um usuário de rede (se existir):

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NovaSenha';

Em seguida:

FLUSH PRIVILEGES;

Substitua NovaSenha pela sua nova senha desejada.

Saia do MySQL usando o comando exit ou pressionando “Ctrl + D”.

Passo 5: Reiniciar o MySQL

Pare o MySQL:

mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p

Em seguida, insira a senha de root previamente definida.

Inicie o MySQL em modo normal:

  • Para Debian e Ubuntu:
systemctl start mysql
  • Para CentOS/RockyLinux/AlmaLinux:
systemctl start mysqld

Como redefinir a senha para usuários regulares

Se você esqueceu a senha de um usuário que não seja o root, a abordagem é semelhante:

  1. Conecte-se ao servidor MySQL como root:
mysql -u root -p

Insira sua senha de root do MySQL.

  1. Execute o comando para alterar a senha:
  • MySQL 5.7:

Para um usuário local:

ALTER USER 'username'@'localhost' IDENTIFIED BY 'NovaSenhaDoUsuario';

Para um usuário de rede (se existir):

ALTER USER 'username'@'%' IDENTIFIED BY 'NovaSenhaDoUsuario';

Em seguida:

FLUSH PRIVILEGES;

Substitua username pelo nome de usuário existente e NovaSenhaDoUsuario pela nova senha desejada.

Saia do MySQL usando o comando exit ou pressionando “Ctrl + D”.

  • MySQL 8.0+:

Para um usuário local:

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NovaSenha';

Para um usuário de rede (se existir):

ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'NovaSenha';

Substitua username pelo nome de usuário existente e NovaSenha pela nova senha desejada.

Em seguida, saia do MySQL usando o comando exit ou a combinação de teclas “Ctrl + D”.

Se necessário, você pode listar todos os usuários com a seguinte consulta:

SELECT User, Host FROM mysql.user;

Como conectar ao MySQL localmente sem digitar senha

Para evitar digitar a senha manualmente toda vez que você se conectar ao MySQL pela linha de comando em seu servidor, você pode salvá-la no arquivo /root/.my.cnf. Abra o arquivo em um editor de texto:

nano /root/.my.cnf

Adicione as seguintes linhas:

[client]

user = root
password = SuaSenhaRoot

Substitua SuaSenhaRoot pela sua senha de root real.

Em seguida, salve o arquivo usando a combinação de teclas “Ctrl + O” e saia do editor de texto com “Ctrl + X”.

Por segurança, defina permissões mais restritas no arquivo .my.cnf:

chmod 600 /root/.my.cnf

Após esta configuração, você pode se conectar simplesmente executando o comando:

mysql -u root