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-table
se --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.