Como cambiar y recuperar la clave en un servidor MySQL

En este mini tutorial les voy a explicar como pueden cambiar y recuperar la clave de root y otros usuarios en MySQL.

Cambiar la clave usando mysqladmin

Si no existe la clave de root para MySQL y nunca la han colocada pueden cambiarla simplemente ejecutando el comando:

mysqladmin -u root password nuevopassword

Donde cambian el nuevopassword por la clave que quieran

Si ya tienen una clave vieja y la quieren cambiar por una nueva:

mysqladmin -u root -p viejopassword nuevopassword

Si quieren cambiar la clave de cualquier usuario (en el ejemplo sería el usuario vensign):

mysqladmin -u vensign -p viejopassword nuevopassword

Cambiar el password desde la consola de mysql

Si no quieres utilizar mysqladmin puedes cambiar la clave desde la consola de mysql para esto entramos ejecutando el comando:

mysql -u root -p

Aparecerá un shell parecido a este:

mysq>

Ahora seleccionamos la base de datos de mysql:

mysql>use mysql;

Si queremos cambiar el password para el usuario vensign:

mysql>update user set password=PASSWORD("NUEVOPASSWORD") where User='vensign';
mysql>flush privileges;

El flush privileges es para reiniciar los privilegios y se haga efectivo el cambio. Si nos queremos salir de la consola de mysql:

mysql>quit

Recuperar la clave de root de mysql

Para recuperar la clave de root de mysql seguimos los siguientes pasos:

1. Detenemos el proceso de mysql:

En Debian / Ubuntu y derivados:

/etc/init.d/mysql stop

Recordar utilizar sudo para Ubuntu.

En Fedora / CentOS y derivados

service mysqld stop

2. Iniciamos el servidor mysql sin chequear las tablas de permisos:

mysqld_safe --skip-grant-tables &

Te debería salir algo como:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

3. Entramos como root al servidor mysql

mysql -u root

4. Cambiamos la clave

mysql>use mysql;
mysql>update user set password=PASSWORD("NUEVOPASSWORD") where User='root';
mysql>flush privileges;

5. Detenemos de nuevo el servidor mysql:

En Debian / Ubuntu y derivados:

/etc/init.d/mysql stop

Recordar utilizar sudo para Ubuntu.

En Fedora / CentOS y derivados

service mysqld stop

6. Iniciamos de nuevo el servidor mysql

En Debian / Ubuntu y derivados:

/etc/init.d/mysql start

Recordar utilizar sudo para Ubuntu.

En Fedora / CentOS y derivados

service mysqld start

7. Probamos la nueva clave:

mysql -u root -p

Pues eso es todo de este mini tutorial espero que les sea de utilidad
Saludos

Olivers

Si quieres recibir notificaciones de cuando se publican nuevos artículos y tutoriales en Vensign por favor subscribete a nuestro boletín RSS.

27 comments

  1. Hola!

    Me parece la caña este post, pero tengo problemas, cuando intento recuperar la pass.

    Me meto via ssh con putty a mi servidor, accedo como root, inicio esto:

    /etc/init.d/mysql stop

    y me responde con este mensaje:
    Rather than invoking init scripts through /etc/init.d, use the service(8)
    utility, e.g. service mysql stop

    Since the script you are attempting to invoke has been converted to an
    Upstart job, you may also use the stop(8) utility, e.g. stop mysql

    Luego continuo con este codigo:

    mysql -u root

    y me salta este error:
    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

    Pese a que pone ” using password: NO ” es como si la hubiera desactivado pero pese a ello no me puedo meter… alguna sugerencia?

    si pudiera ponerse en contacto conmigo via email seria fantastico!

    Saludos y felicidades!

    pd.: uso ubuntu desktop 10.04

  2. Estaba buscando esto, yo tenía un problema, ayer instale lampp y mysql y todo bien, pero ahora al querer entrar a mysql me sale que un error que mysql no me permite, por algun motivo se cambio la contraseña, no podia entrar ni por consola ni nada pero hice lo que esta en este blog y ahora no tengo problemas. Buena.

  3. hola he provado este truco pero no me funciona por que tube la genial idea de cambiar mi clave root de mysql y no me acuerdo, no hay un programa para resetear la clave root por que hago esto y nada me pide que inserte el password

  4. Hola jefer, no tienes ningun error simplemente no le has mandado a imprimir nada en pantalla, si no se estuviera conectando bien te daria un error.

    Puedes probar colocando algo como:

    < ?php
    $link = mysql_connect('localhost', 'usuario', 'password');
    if (!$link) {
        die('No se puede conectar: ' . mysql_error());
    }
    echo 'Se conecto correctamente';
    mysql_close($link);
    ?>
    

    Con esto te debería dar algún mensaje en la página. Mientras no mandes a imprimir nada en pantalla pues no te aparecerá nada. Luego puedes efectuar algún query a la base de datos e imprimir los resultados hay muchos tutoriales en Internet que puedes encontrar de esto:

    Como por ejemplo este http://www.webtaller.com/info/curso-php.php

    Voy a mudar este comentario a la parte de LAMP ya que me parece que pertenece un poco más allá.

    Saludos
    Olivers

  5. Buenas Olivers…. Otra vez yo, a ver si me puedes ayudar; estoy probando una conexión a MySQL con código PHP y la verdad no se que pasa pero siempre se queda la página en blanco al probarlo. El servidor apache funciona correctamente, el módulo PHP también ya que puedo probar otros programitas básicos. El servidor MySQL Tb funciona correctamente si me conecto desde la consola, puedo crear la db, las tablas, hacer consultas etc. Pero con el códogo PHP no funciona.
    El script PHP que utilizo es:

    Si me puedes ayudar te agradecería un montón, es que he mirado muchos tutoriales y todos me dicen lo mismo. Yo diría que es problema de configuración del PHP.ini o My.ini porque es como si no me reconociera el código.
    Gracias.

  6. Hola Jefer intenta ejecutando estos comandos como root:

    yum install libmcrypt
    yum install php-mcrypt*
    yum install php-mhash*
    service httpd restart

    Ya con esto no te debería aparecer más el mensaje, si podrías seguir utilizando el phpmyadmin sin esta librería pero según la gente de phpmyadmin esta librería mejora el desempeño de la aplicación en velocidad.

    Espero que te sirva

    Saludos
    Olivers

  7. Olivers, esta es la repuesta que me dá al hacer “yum install php5-mcrypt”

    updates-newkey | 2.3 kB 00:00
    fedora | 2.1 kB 00:00
    updates | 2.6 kB 00:00
    Setting up Install Process
    Parsing package install arguments
    No package php5-mcrypt available.
    Nothing to do

    Ya ves, no hay paquetes disponibles.
    Solo quiero saber si con este mensaje tenré problemas con el funcionamiento de phpMyAdmin más adelante. De momento funciona correctamente.
    Gracias y perdona.

  8. Hola Olivers, solo una consulta, la página de phpMyAdmin funciona correctamente, puedo crear, consultar etc. pero abajo de todo haga lo que haga siempre me pone el siguiente mensaje como advertencia: no se pudo cargar la extensión mcrypt,por favor revise su configuración de PHP. Existe algún problema??
    Gracias.

  9. Hola Jefer, si tienes que ser root para poder ejecutar este comando.

    En tu comentario anterior nos habías dicho que el comando no te funcionaba ni como root ni como usuario, por eso no te sugerí que hicieras su – antes de ejecutar el comando

    Me alegra que lo hayas resuelto

    Saludos
    Olivers

  10. Olivers, en var/log está el fichero “messages” pero el “syslog” no. En “messages” no me aparece ningun error respecto a esto y en la consola solo me dice “command not found” ahora bien, yo siempre trabajo en la sesión como usuario y en la consola pongo “su” junto con el password del root para poder trabajar como superusuario; si entro en la sesión directamente como root si que me deja ejecutar el comando “service httpd restart”, es esta la razón? debo estar en la sesión del root para poder ejecutarlo?
    Saludos.

  11. Hola Jefer, pueden ser muchas cosas, te da algún mensaje de error cuando ejecutas el comando?. Si no te imprime ningún error en pantalla lo puedes ver en el log del sistema /var/log/message y /var/log/syslog.

    Copia y pega el error que da aquí para poder ayudarte mejor

    Saludos
    Olivers

  12. Hola Olivers, muy buena la explicación, tanto esta como la del servidor LAMP. Lo he probado todo y funciona correctamente.
    Sólo hay una cosa que seguramente será la más tonta.
    Para parar, arrancar o resetear un servicio, al poner “service httpd restart” por ejemplo. El comando no funciona. Ni como root ni como usuario. Tengo que hacerlo mediante “servicios”, en la pestaña “administración”. Estoy con la versión 8 del fedora. Que puede ser??
    Gracias.