Este tutorial fornece etapas para redefinir ou alterar a senha de root do servidor MySQL caso o usuário tenha esquecido a senha. Ele assume que você tem acesso ao sistema para parar e iniciar o servidor MySQL. Este tutorial é específico para MySQL 8.0 e acima, embora deva funcionar imediatamente para versões mais antigas do MySQL, incluindo MySQL 5.7 . Podemos redefinir a senha do root de duas maneiras, conforme mencionado abaixo.
Observações :Você também pode seguir os tutoriais do MySQL - Como instalar o MySQL 8 no Ubuntu, Como remover completamente o MySQL do Ubuntu e aprender consultas básicas de SQL usando o MySQL.
Atualizar senha
Podemos simplesmente atualizar a senha de root do MySQL caso já a saibamos. Isso pode ser feito usando os comandos como mostrado abaixo. O ALTER O comando é o preferido, pois funciona no MySQL 5.7 e MySQL 8 , embora você possa seguir qualquer um dos comandos.
# Login no MySQL
mysql -uroot -p
# OU
mysql -u root -p
# MySQL - 5.7.5 e anterior
UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';
# MySQL - 5.7.6 e mais recente
UPDATE mysql.user SET authentication_string=PASSWORD ("password") onde user='root';
# OU
SET PASSWORD FOR 'root'@'localhost' =PASSWORD("password");
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# OU
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
# Flush
FLUSH PRIVILEGES;
# Desconectar
sair;
Caso você tenha esquecido sua senha de root, você pode seguir o Processo A ou Processo B como mencionado abaixo.
Processo A - Seguro
Neste processo, vamos parar e iniciar o servidor MySQL para usar o script init para alterar a senha do root.
Etapa 1 - Pare o servidor
Temos que parar o servidor como o primeiro passo deste processo. Isso pode ser feito usando os comandos como mostrado abaixo.
# Usando init
sudo /etc/init.d/mysqld stop
# OU
sudo /etc/init.d/mysql stop
# Usando service
sudo service mysql stop
# Usando systemd
sudo systemctl stop mysqld.service
# OU
sudo systemctl stop mysql
Etapa 2 - Criar o arquivo de inicialização
Agora crie o arquivo init e adicione o comando para atualizar a senha do root conforme mostrado abaixo.
# Create Init File - Use seu editor preferido
sudo nanoinit-file.txt
# Adicione a consulta para atualizar a senha
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFICADO POR '';
# OU
ALTER USER 'root'@'localhost' IDENTIFICADO COM mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
Etapa 3 - Iniciar o servidor MySQL
Agora inicie o servidor MySQL usando o arquivo init como mostrado abaixo.
# Inicia o servidor
sudo mysqld --init-file=init-file.txt &
# OU
sudo mysqld_safe --init-file=init-file.txt &
Pode lançar um monte de erros, dependendo da instalação do seu servidor.
Você pode receber o erro com uma mensagem - mysqld_safe Directory '/var/run/
# Parar o servidor
# Criar diretório
sudo mkdir -p /var/run/mysqld
# Alterar proprietário
sudo chown mysql :mysql /var/run/mysqld
# Comece com o arquivo init
sudo mysqld_safe --init-file=init-file.txt &
Você pode receber a mensagem de erro - ERRO 2002 (HY000):Não é possível conectar ao servidor MySQL local por meio do soquete '/var/run/
# Inicie o MySQL Server normalmente - Ubuntu
sudo service mysql start
# Navegue até o diretório sock
cd /var/run
# Take backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Para o servidor normalmente - Ubuntu
sudo service mysql stop
# Restaura o sock
sudo mv ./mysqld.bak ./mysqld
# Inicia o MySQL em modo não seguro
sudo mysqld_safe --skip-grant-tables &
Etapa 4 - Parar e iniciar o servidor MySQL
Agora pare e inicie o servidor MySQL usando os comandos regulares conforme mostrado abaixo.
# Usando init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OU
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Usando o serviço
sudo service mysql stop
sudo service mysql start
# Usando systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OU
sudo systemctl stop mysql
sudo systemctl start mysql
Encerre os processos existentes, se necessário. Use somente se os comandos acima não funcionarem para parar e iniciar o servidor.
# Encontre os processos
ps aux | grep mysqld
ps aux | grep mysql
# Mate os processos
sudo killall mysqld
sudo killall mysql
Etapa 5 - Testar senha
Por fim, teste a nova senha usando o comando conforme mostrado abaixo.
# Testar nova senha
mysql -u root -p
Certifique-se de excluir o arquivo init depois de testar sua nova senha. Caso não dê certo, você pode seguir o Processo B .
Processo B - Menos seguro
Neste processo, pararemos e iniciaremos o servidor MySQL sem exigir nenhuma senha para efetuar login.
Etapa 1 - Pare o servidor
Temos que parar o servidor MySQL atualmente em execução como o primeiro passo para concluir este processo. Isso pode ser feito usando os comandos como mostrado abaixo.
# Usando init
sudo /etc/init.d/mysqld stop
# OU
sudo /etc/init.d/mysql stop
# Usando service
sudo service mysql stop
# Usando systemd
sudo systemctl stop mysqld.service
# OU
sudo systemctl stop mysql
Etapa 2 - Iniciar o MySQL sem senha
Agora inicie o servidor MySQL com a senha desabilitada usando o comando conforme mostrado abaixo. Certifique-se de adicionare comercial (&) no final deste comando. Ele também permite --skip-networking automaticamente para evitar conexões remotas.
# Iniciar sem senha
sudo mysqld_safe --skip-grant-tables &
Você pode receber o erro com uma mensagem - mysqld_safe Directory '/var/run/mysqld ' para arquivo de soquete UNIXnão existe . Temos que criar omysqld diretório e façamysql como o proprietário usando os comandos mostrados abaixo.
# Parar o servidor
# Criar diretório
sudo mkdir -p /var/run/mysqld
# Alterar proprietário
sudo chown mysql :mysql /var/run/mysqld
# Iniciar sem senha
sudo mysqld_safe --skip-grant-tables &
Você pode receber a mensagem de erro - ERRO 2002 (HY000):Não é possível conectar ao servidor MySQL local por meio do soquete '/var/run/mysqld /mysqld .meia' . Nesse casocaso , siga os comandos abaixo mencionados para o Ubuntu resolvê-lo.
# Iniciar MySQL Server
sudo service mysql start
# Navegar para o diretório sock
cd /var/run
# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Parar o servidor
sudo service mysql stop
# Restaurar o sock
/>sudo mv ./mysqld.bak ./mysqld
# Inicia o MySQL em modo não seguro
sudo mysqld_safe --skip-grant-tables &
Etapa 3 - Conectar-se ao MySQL
Agora abra outro terminal ou conecte-se ao servidor através de outro shell para conectar o cliente.
# Conectar Diretamente
mysql
# Conectar como Root
mysql -uroot
# OU
mysql -u root
Etapa 4 - Alterar senha
Nesta etapa, altere a senha do root usando os comandos conforme mostrado abaixo. Você também pode consultar a seção Atualizar senha deste tutorial para usar outros comandos para alterar a senha.
# Alterar senha
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
# Liberar
LIGAR PRIVILÉGIOS;
# Desconectar
sair;
Etapa 5 - Parar e iniciar o servidor MySQL
Agora pare e inicie o servidor MySQL usando os comandos regulares conforme mostrado abaixo.
# Usando init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OU
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Usando o serviço
sudo service mysql stop
sudo service mysql start
# Usando systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OU
sudo systemctl stop mysql
sudo systemctl start mysql
Encerre os processos existentes, se necessário. Use somente se os comandos acima não funcionarem para parar e iniciar o servidor.
# Encontre os processos
ps aux | grep mysqld
ps aux | grep mysql
# Mate os processos
sudo killall mysqld
sudo killall mysql
Etapa 6 - Testar senha
Por fim, teste a nova senha usando o comando conforme mostrado abaixo.
# Testar nova senha
mysql -u root -p
Resumo
É assim que podemos redefinir ou alterar a senha do usuário root ou de qualquer outro usuário caso tenhamos esquecido a senha.