2011-05-22 48 views
23

Eliminé accidentalmente el usuario root en mi configuración de desarrollador local de MAMP/MySQL ejecutándose en OS X. No hay otros usuarios creados para volver a MySQL.Restauración del usuario y la contraseña 'root' eliminados para MySQL

Esta es una pesadilla leve que parece no poder hacer nada sin root.

Encontré esto: http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html que parece exactamente lo que necesito.

Tampoco creo que una reinstalación de MAMP haga el truco, ya que muchas de mis búsquedas superficiales dieron lugar a personas que lo habían intentado sin éxito.

¿Alguien sabe de una manera amistosa de OSX para recrear root @localhost de nuevo en MySQL de MAMP? Básicamente, simplemente no sé dónde está MySQL viviendo en MAMP o cómo ejecutar los comandos correctos en el terminal para intentar solucionarlo.

actualización

He intentado varias opciones de abajo para restablecer la raíz en vano y decidió restaurar una copia de seguridad de toda la aplicación MAMP. Así que tengo la raíz hacia atrás, puedo abrir phpMyAdmin, etc.

Respuesta

45

Tengo una manera rápida y sucia

conseguir a alguien con derechos de administración de sistemas y haga lo siguiente:

  1. Add 'saltar -Grant-tablas a my.cnf en la sección [mysqld]

  2. reiniciar MySQL

  3. tipo MySQL sin contraseña y pulsa enter

  4. Run Este:

    DELETE FROM mysql.user 
    WHERE user = 'root' 
         AND host = 'localhost'; 
    
    INSERT INTO mysql.user 
    SET user = 'root', 
        host = 'localhost', 
        password = Password('whatevernewpassword'), 
        Select_priv = 'y', 
        Insert_priv = 'y', 
        Update_priv = 'y', 
        Delete_priv = 'y', 
        Create_priv = 'y', 
        Drop_priv = 'y', 
        Reload_priv = 'y', 
        Shutdown_priv = 'y', 
        Process_priv = 'y', 
        File_priv = 'y', 
        Grant_priv = 'y', 
        References_priv = 'y', 
        Index_priv = 'y', 
        Alter_priv = 'y', 
        Show_db_priv = 'y', 
        Super_priv = 'y', 
        Create_tmp_table_priv = 'y', 
        Lock_tables_priv = 'y', 
        Execute_priv = 'y', 
        Repl_slave_priv = 'y', 
        Repl_client_priv = 'y', 
        Create_view_priv = 'y', 
        Show_view_priv = 'y', 
        Create_routine_priv = 'y', 
        Alter_routine_priv = 'y', 
        Create_user_priv = 'y', 
        Event_priv = 'y', 
        Trigger_priv = 'y', 
        Create_tablespace_priv = 'y'; 
    
  5. salida de mysql

  6. remove 'skip-grant-tables' de my.cnf en la sección [mysqld]

  7. reiniciar MySQL

¡Eso debería ser todo!

+1

Para cualquiera que use MAMP. Crea tu propio 'my.cnf' en' MAMP/conf/', y en él coloca' [mysqld] skip-grant-tables'. – Thumbz

+0

Este es el que funcionó para mí. Si no tiene ningún usuario raíz, debe crear uno y muchas de las instrucciones parecen ignorarlo. Gracias Rolando! – ftrotter

+0

Gracias, esto me sacó de un aprieto. Estaba usando Windows Server 2008 FWIW. –

10

La versión traducida de http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html - para OS X.

abierto TextEdit.app y seleccione en Formato -> "Convertir en texto normal".
cortar y pegar el siguiente en edición de textos y guardarlo en la carpeta de INICIO con el nombre restore_root_privileges.sql

update mysql.user set Super_priv='y' where user='root'; 
update mysql.user set Select_priv='y' where user='root'; 
update mysql.user set Insert_priv='y' where user='root'; 
update mysql.user set Update_priv='y' where user='root'; 
update mysql.user set Delete_priv='y' where user='root'; 
update mysql.user set Create_priv='y' where user='root'; 
update mysql.user set Drop_priv='y' where user='root'; 
update mysql.user set Reload_priv='y' where user='root'; 
update mysql.user set Shutdown_priv='y' where user='root'; 
update mysql.user set Process_priv='y' where user='root'; 
update mysql.user set File_priv='y' where user='root'; 
update mysql.user set Grant_priv='y' where user='root'; 
update mysql.user set References_priv='y' where user='root'; 
update mysql.user set Index_priv='y' where user='root'; 
update mysql.user set Alter_priv='y' where user='root'; 
update mysql.user set Show_db_priv='y' where user='root'; 
update mysql.user set Super_priv='y' where user='root'; 
update mysql.user set Create_tmp_table_priv='y' where user='root'; 
update mysql.user set Lock_tables_priv='y' where user='root'; 
update mysql.user set Execute_priv='y' where user='root'; 
update mysql.user set Repl_slave_priv='y' where user='root'; 
update mysql.user set Repl_client_priv='y' where user='root'; 
update mysql.user set Create_view_priv='y' where user='root'; 
update mysql.user set Show_view_priv='y' where user='root'; 
update mysql.user set Create_routine_priv='y' where user='root'; 
update mysql.user set Alter_routine_priv='y' where user='root'; 
update mysql.user set Create_user_priv='y' where user='root'; 

Guardar y salir TextEdit.app.

Stop you mysqld server. Cómo hacer esto, depende de qué instalación usó para MySQL. Probablemente tenga un PreferencePane en las preferencias de su sistema.De lo contrario, debe consultar los documentos para su instalación de MySQL.

Terminal.app abierto (Aplicaciones/Utilidades) entre los mandatos siguientes:

sudo mysqld --skip-grant-tables & #start your MySQL server without access control 
mysql -vv < ~/restore_root_privileges.sql 
sudo mysqladmin -p shutdown 

Iniciar el servidor MySQL como por lo general, por ejemplo, de PreferencePanes.
En el Terminal.app: Introduzca los siguientes:

mysql -u root -p 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; 
mysql> quit; 

eso es todo. Sin ninguna garantía. Puede perder todos sus datos si hace algo mal. Realice primero una copia de seguridad de sus archivos mysql.

Si tienes algo como:

-bash: mysql: command not found 

eso quiere decir, que su instalación es incorrecta y debe encontrar dónde están los binarios de MySQL, y la necesidad de entrar en el directorio en el que la variable PATH.

+0

Muchas gracias. Éste me funcionó bajo Ubuntu Linux usando XAMPP y hace exactamente las cosas correspondientes: D – hakermania

+0

En mi Mac, mysqld se negó a ejecutar como root. Lo resolvió usando el usuario mysql agregando '-u mysql' al comando sudo. – nschum

1

Hice exactamente lo mismo ayer, siendo nuevo en Mac y en el servidor sql. Accidentalmente borré el usuario raíz porque presioné el botón incorrecto en Privilegios mientras trataba de configurar un nuevo usuario y contraseña.

No tenía ningún trabajo de ningún uso en esta computadora, así que no estaba preocupado por eliminar mis sitios web.

  • Primero desinstalé MAMP Pro (para el cual tenía un ícono en Launchpad).
  • Luego eliminé el directorio MAMP de la carpeta Aplicaciones.
  • Luego reinstalé MAMP de la descarga de internet.
  • Luego, ELIMINÉ todas mis cookies, el caché, etc. de safari.
  • Apagué mi computadora y reinicié.

Ahora tengo acceso a phpMyAdmin a través del enlace en la página de inicio una vez que se inicia MAMP.

+0

¿Funcionará esto, sin perder las configuraciones existentes, los usuarios y la base de datos? – Debiprasad

0

Ok, detenga la ejecución de MySQL y abra los archivos de instalación que vienen con. Debería haber un archivo bat llamado resetroot.bat. Ejecútelo y su problema desaparecerá.

5

Acabo de recibir el mismo - problema. Estoy usando Xammp en Windows 7. Accidentalmente eliminé un usuario raíz en phpmyadmin.

Parece que era capaz de solucionar el problema en la ruta fácil como esto:

Parar el Apache y MySQL en el control XAMMP

Ir a .../XAMMP/mysql

Se hará ver el archivo "resetroot".Ejecutar este archivo

Después de esta aplicación está terminado, reinicie el MySQL y Apache

Ir a phpmyadmin y verá el usuario root restaurado

Ahora se puede acceder a todas las bases de datos de nuevo

+0

nice answer alex eso es lo que busco –

3

usando mamp. Cometí el error aparentemente común de eliminar al usuario raíz al crear otro usuario, ¡estaba bloqueado!

así que encontré este post y trataron de seguir las instrucciones, pero ...

que estaba recibiendo esta Errores: -bash: mysql: comando no encontrado al intentar ejecutar los comandos de comandos de MySQL y más tarde me conseguir este error DELETE negó al usuario '' @ 'localhost' para la tabla 'usuarios' cuando tring para configurar correctamente los privilegios de usuario root y hacer cualquier cosa con ese usuario una vez mysql con cáscara.

así que antes de que pudiera utilizar los comandos de Eric y Rolando publicado (gracias chicos por que) esto es lo que hice

tengo que iniciar mysqld propiamente que tenía que hacer lo siguiente

proceso mysqld

  1. parada encontró con

    ps aux | grep mysql

and stop the mamp interface application aswell..

  1. y se detuvo cualquier proceso MySQL encontrado con

    kill -9 [pid]

do make sure no mysql process are running before you go any further.

  1. luego tuve que reiniciar mysqld correctamente desde la ubicación real donde tuve binarios de MySQL este commnad comenzará mysld sin pedir una contraseña (algo así como en el modo seguro)

/Applications/MAMP/Library/bin/mysqld --skip-grant-tables --skip-networking &

he intentado con my.cnf archivo, pero no pude conseguir que funcione.

  1. entonces yo tenía que ir a MySQL con cáscara

/Applications/MAMP/Library/bin/mysql -u root -p

(si se le solicita una contraseña teclee enter)

  1. luego ejecutar los comandos de Eric y Rolando publicado, esta vez no me dieron ningún error "DELETE negó al usuario '' @ 'localhost' para la tabla 'usuarios'" si lo hace, no se inició mysqld adecuadamente

  2. continuación, detenga el servicio mysqld:

/Applications/MAMP/Library/bin/mysqld stop

luego se reinicia MAMP como de costumbre con la interfaz gráfica de usuario

y todo empezó a funcionar de nuevo como lo era antes ... Estaba tan aliviado !! !

2 horas de pánico y ensayo y error con la consola ... valiosas enseñanzas ..

Si metí la pata cualquiera de los comandos o la explicación (que podría ser el caso cuando estaba trazando mis pasos atrás como escribir este post por favor hágamelo saber. yo sería feliz para actualizar el mensaje.

por último no dan. se puede hacer !!

1

Sólo quería contribuir cómo resolví esto. Si borró accidentalmente al usuario raíz en MAMP PRO y está utilizando OSX con copias de seguridad de Time Machine. Simplemente vaya a esta carpeta en el buscador:

/Library/Application Support/Appsolute/

Entonces 'Entrar en Time Machine' de la barra de menú superior y restaurar una copia de seguridad reciente de la carpeta MAMP PRO. Ahorré muchas molestias para mí.

Cuestiones relacionadas