Pesquisa de site

Como redefinir a senha root no MySQL 8 no Ubuntu Linux


Você esqueceu a senha do usuário root do banco de dados MySQL? Sem problemas! Este guia passo a passo explica como redefinir a senha root no MySQL 8 no sistema operacional Ubuntu 20.04.

Nota: Como você já deve saber, o usuário root do MySQL usa o plugin auth_socket para autenticar com o servidor MySQL em sistemas Ubuntu rodando MySQL 5.7 e versões posteriores. Portanto, você pode fazer login no servidor MySQL como usuário root com o comando sudo mysql, desde que saiba a senha sudo do usuário do sistema. Nesse caso, não é necessário alterar a senha root do MySQL. Se você já alterou o método de autenticação do usuário root do MySQL para caching_sha2_password ou mysql_native_password, siga as etapas abaixo para redefinir o root senha do banco de dados MySQL.

Redefinir a senha root no MySQL 8 no Ubuntu Linux

1. Primeiro, pare o serviço MySQL usando o comando:

sudo systemctl stop mysql

Isso interromperá o serviço MySQL se estiver em execução. Você pode verificar o status do serviço MySQL com o comando:

sudo systemctl status mysql

Exemplo de resultado:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Mon 2021-05-31 11:01:15 UTC; 1min 15s ago
     Process: 1446 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 1446 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 31 07:57:50 ubunt4.localdomain systemd[1]: Starting MySQL Community Server…
 May 31 07:57:51 ubunt4.localdomain systemd[1]: Started MySQL Community Server.
 May 31 11:01:14 ubunt4.localdomain systemd[1]: Stopping MySQL Community Server…
 May 31 11:01:15 ubunt4.localdomain systemd[1]: mysql.service: Succeeded.
 May 31 11:01:15 ubunt4.localdomain systemd[1]: Stopped MySQL Community Server.

Pare o serviço MySQL

2. Em seguida, inicie o servidor MySQL sem qualquer verificação de permissão. Para fazer isso, execute:

sudo systemctl edit mysql

Isso abrirá o arquivo de configuração mysql systemd do seu editor de texto padrão. No meu caso, é o editor nano.

Adicione as seguintes linhas nele:

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

Edite o arquivo de configuração do mysql systemd

Após adicionar as linhas acima, pressione CTRL+O e ENTER para salvar o arquivo e pressione CTRL+X para fechá-lo.

Aqui, a opção --skip-grant-tables permite que você se conecte ao servidor de banco de dados MySQL sem senha e com todos os privilégios. Ele também desativará instruções de gerenciamento de conta, como ALTER USER e SET PASSWORD. E a opção --skip-networking é usada para evitar que outros clientes se conectem ao servidor de banco de dados. Como desativa todas as conexões remotas, nenhum dos clientes remotos poderá acessar o servidor de banco de dados até que você reinicie o servidor de banco de dados normalmente.

3. Recarregue a configuração do systemd usando o comando:

sudo systemctl daemon-reload

4. Inicie o serviço MySQL:

sudo systemctl start mysql

Isso iniciará o servidor MySQL com as opções --skip-grant-tablese --skip-networking. Você pode verificar isso verificando o status do serviço MySQL:

sudo systemctl status mysql
 ● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Drop-In: /etc/systemd/system/mysql.service.d
              └─override.conf
      Active: active (running) since Mon 2021-05-31 11:39:18 UTC; 1min 23s ago
     Process: 1882 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Main PID: 1905 (mysqld)
      Status: "Server is operational"
       Tasks: 36 (limit: 2280)
      Memory: 331.0M
      CGroup: /system.slice/mysql.service
              └─1905 /usr/sbin/mysqld --skip-grant-tables --skip-networking
 May 31 11:39:16 ubunt4.localdomain systemd[1]: Starting MySQL Community Server…
 May 31 11:39:18 ubunt4.localdomain systemd[1]: Started MySQL Community Server.

5. Agora, conecte-se ao servidor MySQL como usuário root sem senha:

sudo mysql -u root

Você será direcionado imediatamente ao prompt do shell do MySQL.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

6. Efetuamos login no servidor de banco de dados sem carregar tabelas de concessão (porque usamos a opção --skip-grant-tables). Portanto, não podemos usar o comando ALTER USER que é necessário para redefinir a senha. Para carregar tabelas de concessão, execute o seguinte comando no prompt do shell do MySQL:

mysql> FLUSH PRIVILEGES;

7. Em seguida, execute qualquer um dos seguintes comandos para redefinir a senha root do MySQL.

Se você estiver usando o plugin caching_sha2_password, execute:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Redefinir a senha root no MySQL 8 no Ubuntu Linux

Se você usar o plugin mysql_native_password, execute isto:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';

Substitua Password123#@! pela sua própria.

Após alterar a senha root do MySQL, saia do prompt do shell do MySQL:

mysql> exit

8. Reverta a configuração systemd modificada de volta às configurações normais usando o comando:

sudo systemctl revert mysql

Isso removerá todos os arquivos modificados.

Removed /etc/systemd/system/mysql.service.d/override.conf.
Removed /etc/systemd/system/mysql.service.d.

9. Recarregue a configuração do systemd para que as alterações tenham efeito:

sudo systemctl daemon-reload

10. Finalmente, reinicie o servidor MySQL normalmente:

sudo systemctl restart mysql

11. Agora você deve conseguir se conectar ao banco de dados MySQL como usuário root com a nova senha usando o comando:

mysql -u root -p

Digite a senha root para acessar o prompt do shell do MySQL:

mysql> 

Há também outra maneira de alterar a senha root do MySQL no Linux. É um pouco diferente deste método. Se você estiver interessado em saber, dê uma olhada no seguinte link:

>> How To Reset MySQL Root User Password In Linux

Conclusão

Como você pode ver, redefinir a senha root do MySQL é fácil! Se você seguiu as etapas acima com cuidado, poderá recuperar a senha root do banco de dados MySQL em alguns minutos. Não perca de novo. Memorize ou salve sua senha em um local seguro.

Artigos relacionados