Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Redefinir a senha raiz do MySQL


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 nano init-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/ mysqld ' para arquivo de soquete UNIX não existe . Temos que criar o mysqld diretório e faça mysql 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

# 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/mysqld /mysqld .meia' . Nesse caso, siga os comandos abaixo mencionados para resolvê-lo.


# 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 adicionar e 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 UNIX não existe . Temos que criar o mysqld diretório e faça mysql 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 caso caso , 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.