sql >> Base de Datos >  >> RDS >> Mysql

Restablecer contraseña raíz de MySQL

Este tutorial proporciona pasos para restablecer o cambiar la contraseña raíz del servidor MySQL en caso de que el usuario olvide la contraseña. Se supone que tiene acceso al sistema para detener e iniciar el servidor MySQL. Este tutorial es específico para MySQL 8.0 y superior, aunque debería funcionar de inmediato para versiones anteriores de MySQL, incluido MySQL 5.7 . Podemos restablecer la contraseña de root de dos maneras, como se menciona a continuación.

Notas :También puede seguir los tutoriales de MySQL:cómo instalar MySQL 8 en Ubuntu, cómo eliminar completamente MySQL de Ubuntu y aprender consultas SQL básicas con MySQL.

Actualizar contraseña

Simplemente podemos actualizar la contraseña de root de MySQL en caso de que ya la conozcamos. Se puede hacer usando los comandos como se muestra a continuación. El ALTER El comando es el preferido ya que funciona en MySQL 5.7 y MySQL 8 , aunque puedes seguir cualquiera de los comandos.

# Login to MySQL
mysql -uroot -p
# OR
mysql -u root -p

# MySQL - 5.7.5 and earlier
UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';

# MySQL - 5.7.6 and newer
UPDATE mysql.user SET authentication_string=PASSWORD("password") where user='root';
# OR
SET PASSWORD FOR 'root'@'localhost' = PASSWORD("password");

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

En caso de que haya olvidado su contraseña raíz, puede seguir el Proceso A o Proceso B como se menciona a continuación.

Proceso A - Seguro

En este proceso, detendremos e iniciaremos el servidor MySQL para usar el script de inicio para cambiar la contraseña de root.

Paso 1:detener el servidor

Tenemos que detener el servidor como primer paso de este proceso. Se puede hacer usando los comandos que se muestran a continuación.

# Using init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop

# Using service
sudo service mysql stop

# Using systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql

Paso 2:crear el archivo de inicio

Ahora cree el archivo de inicio y agregue el comando para actualizar la contraseña de root como se muestra a continuación.

# Create Init File - Use your preferred editor
sudo nano <path to init file>init-file.txt

# Add the query to update password

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

Paso 3:iniciar el servidor MySQL

Ahora inicie el servidor MySQL usando el archivo init como se muestra a continuación.

# Start the server
sudo mysqld --init-file=<path to init file>init-file.txt &
# OR
sudo mysqld_safe --init-file=<path to init file>init-file.txt &

Puede arrojar un montón de errores dependiendo de la instalación de su servidor.

Es posible que reciba el mensaje de error:mysqld_safe Directory '/var/run/ mysqld ' para archivo de socket UNIX no existe . Tenemos que crear el mysqld directorio y hacer mysql como propietario utilizando los comandos que se muestran a continuación.

# Stop the server

# Make directory
sudo mkdir -p /var/run/mysqld

# Change owner
sudo chown mysql:mysql /var/run/mysqld

# Start with init file
sudo mysqld_safe --init-file=<path to init file>init-file.txt &

Es posible que reciba el mensaje de error:ERROR 2002 (HY000):No se puede conectar al servidor MySQL local a través del socket '/var/run/mysqld /mysqld .calcetín' . En tal caso, siga los comandos mencionados a continuación para resolverlo.

# Start MySQL Server normally - Ubuntu
sudo service mysql start

# Navigate to sock directory
cd /var/run

# Take backup - sock
sudo cp -rp ./mysqld ./mysqld.bak

# Stop the server normally - Ubuntu
sudo service mysql stop

# Restore the sock
sudo mv ./mysqld.bak ./mysqld

# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &

Paso 4:detener e iniciar el servidor MySQL

Ahora detenga e inicie el servidor MySQL usando los comandos regulares como se muestra a continuación.

# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OR
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

# Using service
sudo service mysql stop
sudo service mysql start

# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql

Terminar los procesos existentes si es necesario. Úselo solo si los comandos anteriores no funcionan para detener e iniciar el servidor.

# Find the processes
ps aux | grep mysqld
ps aux | grep mysql

# Kill the processes
sudo killall mysqld
sudo killall mysql

Paso 5 - Contraseña de prueba

Finalmente, pruebe la nueva contraseña usando el comando como se muestra a continuación.

# Test new password
mysql -u root -p

Asegúrese de eliminar el archivo de inicio después de probar su nueva contraseña. En caso de que no funcione, puedes seguir el Proceso B .

Proceso B - Menos seguro

En este proceso, detendremos y luego iniciaremos el servidor MySQL sin requerir ninguna contraseña para iniciar sesión.

Paso 1:detener el servidor

Tenemos que detener el servidor MySQL que se está ejecutando actualmente como primer paso para completar este proceso. Se puede hacer usando los comandos que se muestran a continuación.

# Using init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop

# Using service
sudo service mysql stop

# Using systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql

Paso 2:Iniciar MySQL sin contraseña

Ahora inicie el servidor MySQL con la contraseña deshabilitada usando el comando como se muestra a continuación. Asegúrese de agregar ampersand (&) al final de este comando. También habilita --skip-networking automáticamente para evitar conexiones remotas.

# Start without password
sudo mysqld_safe --skip-grant-tables &

Es posible que reciba el mensaje de error:mysqld_safe Directory '/var/run/ mysqld ' para archivo de socket UNIX no existe . Tenemos que crear el mysqld directorio y hacer mysql como propietario utilizando los comandos que se muestran a continuación.

# Stop the server

# Make directory
sudo mkdir -p /var/run/mysqld

# Change owner
sudo chown mysql:mysql /var/run/mysqld

# Start without password
sudo mysqld_safe --skip-grant-tables &

Es posible que reciba el mensaje de error:ERROR 2002 (HY000):No se puede conectar al servidor MySQL local a través del socket '/var/run/mysqld /mysqld .calcetín' . En tal caso , siga los comandos mencionados a continuación para que Ubuntu lo resuelva.

# Start MySQL Server
sudo service mysql start

# Navigate to sock directory
cd /var/run

# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak

# Stop the server
sudo service mysql stop

# Restore the sock
sudo mv ./mysqld.bak ./mysqld

# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &

Paso 3:Conéctese a MySQL

Ahora abra otra terminal o conéctese al servidor a través de otro shell para conectar el cliente.

# Connect Directly
mysql

# Connect as Root
mysql -uroot
# OR
mysql -u root

Paso 4 - Cambiar contraseña

En este paso, cambie la contraseña de root usando los comandos que se muestran a continuación. También puede consultar la sección Actualizar contraseña de este tutorial para usar otros comandos para cambiar la contraseña.

# Change Password

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

Paso 5:detener e iniciar el servidor MySQL

Ahora detenga e inicie el servidor MySQL usando los comandos regulares como se muestra a continuación.

# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OR
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

# Using service
sudo service mysql stop
sudo service mysql start

# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql

Terminar los procesos existentes si es necesario. Úselo solo si los comandos anteriores no funcionan para detener e iniciar el servidor.

# Find the processes
ps aux | grep mysqld
ps aux | grep mysql

# Kill the processes
sudo killall mysqld
sudo killall mysql

Paso 6 - Contraseña de prueba

Finalmente, pruebe la nueva contraseña usando el comando como se muestra a continuación.

# Test new password
mysql -u root -p

Resumen

Así es como podemos restablecer o cambiar la contraseña del usuario root o de cualquier otro usuario en caso de que hayamos olvidado la contraseña.