2012-01-09 9 views
18

He instalado el servidor de MySQL 5 en redhat linux. No puedo iniciar sesión como root, así que no puedo cambiar la contraseña de root.Cómo cambiar la contraseña de root de mysql

mysql -u root -p 
Enter password: <blank> 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' 
(using password: NO) 

Cuando intento configurar uno como este:

mysqladmin -u root password 'newpass' 

Me aparece un error:

mysqladmin: connect to server at 'localhost' failed 
error: 'Access denied for user 'root'@'localhost' 
(using password: NO)' 

Como si existe un conjunto clave de root.

También he intentado restablecer la contraseña utilizando (descrito here)

/sbin/service mysqld start --skip-grant-tables 

y luego hacer:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')  
-> WHERE User='root'; 
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user' 

incluso desinstalado mysql-servidor (usando yum) y luego volver a instalar, pero que no ayudó.

¿Cómo fuerzo a restablecer la contraseña de root?

+0

Compruebe que su mysqld esté instalado, habilitado y activado con el comando: 'sudo service mysqld status'. –

Respuesta

4

Quité la instalación de MySQL y eliminé los archivos de datos, y luego los reinstalé.

Luego pude establecer la contraseña de root. Una vez que estableces la contraseña de root a algo. mysqladmin no te permitirá restablecerlo si no lo sabes.

para restablecerla, uno tiene que tener la propiedad sobre cómo se ejecuta mysqld, y alimentar un archivo de inicio para cambiar la contraseña de root: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

+1

puede corregir el enlace – ihebiheb

6

La contraseña del usuario raíz es una cadena vacía por defecto.

Y (using password: NO) dice que no hay contraseña.

¿Intenta iniciar sesión desde otro sistema? Me imagino que solo puedes iniciar sesión como usuario root localmente.

+0

¿Necesito ser la raíz del sistema para ser root en el servidor mysql? – yossi

+0

No estoy seguro, pero no lo creo. Desafortunadamente, nunca usé Redhat ... EDITAR: ¿Pero por qué no lo intentas? – danijar

+0

Tenga en cuenta que si desea intentar iniciar sesión sin contraseña, simplemente evite especificar '-p' en la línea de comando. –

6

Una opción es guardar UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root'; en un archivo y luego iniciar manualmente mysqld con --init-file=FILENAME. Una vez que el servidor se inicia, debe restablecer su contraseña, y luego debe poder iniciar sesión. Después de esto, debe apagar el servidor e iniciarlo normalmente.

+1

Buen señor, ¿por qué habría alguien da un -1 a la única solución que encontré para estar trabajando. Un archivo init sql era la única forma en que podía sobreescribir la contraseña del usuario root de mysql y poder usarla. Es una pena que deba recurrir a tales operaciones en un software recién instalado, sin embargo, es bueno tener una solución ** confiable **. –

+2

'sudo mysql service stop && echo" ACTUALIZACIÓN mysql.user SET Password = PASSWORD ('newpass') WHERE Usuario = 'root'; " > /tmp/reset.sql && sudo /etc/init.d/mysql start --init-file =/tmp/reset.sql' –

3

Retire el -p de su comando. -p fuerza la solicitud de contraseña.

Uso: mysql -u root

Esto resolverá el problema.

+2

Esto solo funciona si no hay una contraseña de root. Si se ha establecido una contraseña de root, se debe proporcionar. –

2

Esto me ayudó en Windows con MySQL Server 5.6. Asegúrese de cambiar la ruta mysqld para apuntar a donde se ha instalado el servidor MySQL, para mí fue "C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe":

  1. sesión en el sistema como administrador.

  2. Detenga el servidor MySQL si se está ejecutando.Para un servidor que es ejecutándose como un servicio de Windows, vaya al administrador de Servicios: En el menú Inicio, seleccione Panel de control, luego Herramientas administrativas, luego Servicios. Busque el servicio MySQL en la lista y deténgalo.

    Si su servidor no se está ejecutando como un servicio, puede necesitar usar el Administrador de tareas para forzarlo a detenerse.

  3. Cree un archivo de texto que contenga las siguientes afirmaciones. Reemplace la contraseña con la contraseña que desea usar.

    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 advierta el cambio de contraseña.

  4. Guarde el archivo. Para este ejemplo, el archivo se llamará C:\mysql-init.txt.

  5. Abra una ventana de consola para acceder al símbolo del sistema: en el menú Inicio, seleccione Ejecutar, luego ingrese cmd como el comando que se ejecutará.

  6. Iniciar el servidor MySQL con la opción init-archivo especial (observe que la barra invertida en el valor de la opción se duplica):

    C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt 
    

    Si ha instalado MySQL en una ubicación distinta de C: \ mysql, ajuste el comando en consecuencia.

    El servidor ejecuta los contenidos del archivo nombrado por la opción --init-file al inicio, cambiando cada contraseña de la cuenta raíz.

    También puede agregar la opción --console al comando si desea que la salida del servidor aparezca en la ventana de la consola en lugar de en un archivo de registro.

    Si ha instalado MySQL utilizando el asistente de instalación, es posible que tenga que especificar una opción --defaults-archivo:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe" 
        --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini" 
        --init-file=C:\\mysql-init.txt 
    

    El ajuste --defaults-archivo adecuado se puede encontrar utilizando el Administrador de servicios: Desde el menú Inicio, seleccione Panel de control, luego Herramientas administrativas, luego Servicios. Encuentre el servicio MySQL en la lista, haga clic con el botón derecho y elija la opción Propiedades. El campo Ruta al ejecutable contiene la configuración --defaults-file.

  7. Después de que el servidor se haya iniciado correctamente, elimine C: \ mysql-init.txt.

http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html

2

Trate de hacer esto:

mysql -u root 

y luego:

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

mysql> FLUSH PRIVILEGES; 

funcionó bien para mí!

2

Probablemente un poco tarde aquí, pero aquí es lo que hice:

crear resetpass.sh archivo que tiene:

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

# mysqld_safe --init-file=resetpass.sh 

# service mysqld start --skip-grant-tables 

# mysql -u root -p 

Adentrarse

mysql > change root pass ; flush privs; 

dejar de fumar

# restart mysql service 

El MySQL v La ersión que estaba usando era 5.1.73 bajo centos6

0

De acuerdo con los documentos, en MySQL 5.7 la contraseña temporal se pone en /var/log/mysqld, pero evidentemente este no es el caso en 5.6.

Con MySQL versión 5.6 instalada en RHEL 6.7, finalmente encontré que la contraseña de root temporal establecida durante la instalación se colocó en el archivo /root/.mysql_secret.

Cuestiones relacionadas