2012-04-26 14 views
18

He heredado un servidor que tiene instalado mysql. No tengo la contraseña de mysql para ningún usuario, ni siquiera la raíz (aunque tengo la contraseña de root de Linux). Además, solo conozco otra raíz de usuario de la cuenta de usuario, y esa no tiene privilegios para realizar ninguna acción, ni siquiera SELECCIONAR.Restablecer la contraseña de raíz de MySQL cuando no se conoce la contraseña actual

Traté de detener el servicw MySQL, reiniciando con la opción de tablas de permisos de salto, y acaba de iniciar sesión sin contraseña:

service mysqld stop 
service mysqld start --skip-grant-tables & 
mysql -u root 

Pero el siguiente error:

Access denied for user 'root'@'localhost' (using password: NO) 

Luego trató de restablecer la contraseña:

mysqladmin -u root password 'newpw' 

Pero eso también da un acceso denegado erro r.

También probé una sesión como otro usuario (sin PW) y ejecutar el siguiente comando:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; 

y tiene este error:

ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user' 

También he intentado quitar MySQL y reinstalar , pero obtengo los mismos errores

¿Alguna sugerencia?

+2

Try [estas instrucciones] (http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html#resetting-permissions-unix) del manual. –

+1

Tenga en cuenta que si desea utilizar '--skip-grant-tables' puede necesitar iniciar' mysqld' directamente ya que las opciones no se pasan necesariamente a través del script de inicio. –

+1

Esta pregunta realmente pertenece a [Administradores de bases de datos] (http://dba.stackexchange.com/) o [Superusuario] (http://superuser.com/), no SO. – eggyal

Respuesta

7

dos opciones:

Si desea utilizar --skip-grant-tables puede que tenga que iniciar mysqld directamente como las opciones no son necesariamente transmitirse a través de la secuencia de comandos de inicio.

De lo contrario, intente these instructions en el manual.

2

`UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;

Escriba las instrucciones UPDATE y FLUSH cada una en una sola línea. La instrucción UPDATE restablece la contraseña para todas las cuentas raíz, y la instrucción FLUSH le dice al servidor que vuelva a cargar las tablas de concesión en la memoria para que note el cambio de contraseña.

34

prueba sudo dpkg-reconfigure mysql-server-5.5 y se le solicitará la nueva contraseña de root .

Reemplazar 5.5 con la versión actual del servidor MySQL-

+3

La forma más conveniente, rápida y elegante de Debian. Funciona como un amuleto –

+3

No funcionará para configurar la contraseña sin contraseña. En tal caso, establezca cualquier contraseña, inicie sesión en mysql y 'SET PASSWORD FOR root @ localhost = PASSWORD ('');' – bartekbrak

+0

Eso es lo que usé y funcionó –

0

En mi caso estaba sucediendo mismo, pero yo estaba haciendo error en la sesión en línea de MySQL. Estaba haciendo por mysql en lugar de mysql -u root -p

3

Debe asegurarse de estar ejecutando el comando como usuario root usando el comando sudo.

Encontré esto instruction para restablecer la contraseña de mysql funciona bien.

Siguiendo este procedimiento, deshabilitará el control de acceso en el servidor MySQL. Todas las conexiones tendrán un acceso de root. Es una buena idea desenchufar su servidor de la red o al menos desactivar el acceso remoto.

para restablecer su contraseña mysqld sólo tienes que seguir estas instrucciones:

Stop the mysql demon process using this command : 

     sudo /etc/init.d/mysql stop 

Start the mysqld demon process using the --skip-grant-tables option with this command 

     sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking & 

Debido a que usted no está mirando privs usuario en este momento, lo más seguro es desactivar la red. En Dapper,/usr/bin/mysqld ... no funcionó. Sin embargo, mysqld --skip-grant-tables hizo.

start the mysql client process using this command 

     mysql -u root 

from the mysql prompt execute this command to be able to change any password 

     FLUSH PRIVILEGES; 

Then reset/update your password 

     SET PASSWORD FOR [email protected]'localhost' = PASSWORD('password'); 

If you have a mysql root account that can connect from everywhere, you should also do: 

     UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root'; 

Alternate Method: 

     USE mysql 
     UPDATE user SET Password = PASSWORD('newpwd') 
     WHERE Host = 'localhost' AND User = 'root'; 

And if you have a root account that can access from everywhere: 

     USE mysql 
     UPDATE user SET Password = PASSWORD('newpwd') 
     WHERE Host = '%' AND User = 'root'; 

Para cualquier método, una vez que han recibido un mensaje que indica una consulta con éxito (una o más filas afectadas), privilegios de descarga:

FLUSH PRIVILEGES;

A continuación, detener el proceso mysqld y relanzarlo con la forma clásica:

sudo /etc/init.d/mysql detener

sudo /etc/init.d/mysql comenzar

0

Para MySQL 5.7.16 en Ubuntu 16.04 esto funcionó:

  • de inicio de sesión sin contraseña:

    sudo mysqld_safe --skip-grant-tables skip-networking &

  • cambio de contraseña:

    contraseña establecida para 'root' @ 'localhost' = 'mypass';

Encontrado solución en MySQL 5.7 Reference Manual

Cuestiones relacionadas