Configuración de la contraseña de root en la nueva instalación de mysql 5.7


11

Estoy tratando de instalar mysql en una porción que tiene CentOS Linux release 7.2.1511. Eche un vistazo a la instalación del proceso:

# sudo yum install mysql-server

Salida:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

Ejecuté el demonio mysql:

# sudo service mysqld start

Comprobación del servicio:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Aquí viene el problema que me vuelve loco. Quiero establecer la contraseña de root por primera vez, así que lo hice:

# sudo mysql_secure_installation
// when password is required, I just type "enter key"

Pero el resultado: asegurar la implementación del servidor MySQL.

Ingrese la contraseña para el usuario root: Error: Acceso denegado para el usuario 'root' @ 'localhost' (usando la contraseña: NO)

Googleando el error, en el 90% de los casos, la solución es llamar al mysqld_safe --skip-grant-tables &comando:

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

Pero mysqld_safeprovoca un error de "comando no encontrado". También probé con sudo mysqld --skip-grant-tables &, pero no hace nada. Le agradeceré si me guía en la dirección correcta para establecer la contraseña de root. Gracias de antemano.


Necesito esos binarios para estar en el PATH. O necesitas caminos completos. (Esta es más una pregunta de Linux que una pregunta de MySQL.)
Rick James

Respuestas:


18

Si solo ejecuta el comando mysql bajo el usuario root, se le otorgará acceso sin solicitar la contraseña, ya que la autenticación de socket está habilitada para root @ localhost.

Esta guía es engañosa.

La única forma de establecer una contraseña es cambiar a autenticación nativa como:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

Eres el salvador! Trabaja como encanto !.
Zugor

9

En mi loca búsqueda de una solución, eché un vistazo /var/log/mysqld.logy encontré esta línea:

[Nota] Se genera una contraseña temporal para root @ localhost: abc123

Parece que mysql 5.7+ genera una contraseña aleatoria en la instalación y se le solicita en ese archivo.


7

Siga los pasos a continuación para restablecer la contraseña:

$ sudo systemctl start mysqld

Restablezca la contraseña de root del servidor MySQL.

$sudo grep 'temporary password' /var/log/mysqld.log

Salida algo como:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

Use la contraseña anterior durante el proceso de reinicio mysql_secure_installation .

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

Ha restablecido correctamente la contraseña de root del servidor MySQL. Utilice el siguiente comando para verificar si el servidor MySQL se conecta o no.

$ mysql -u root -p

Vea mi artículo: Instale MySQL 5.7 más reciente en RHEL / Centos 7


3

Todo lo anterior no funcionó para mí y tenga en cuenta que pasé una hora o más probando todas las demás sugerencias del sitio web MYSql para todo en SO, finalmente lo conseguí trabajando con:

Nota: aunque mostraba Introducir contraseña para el usuario root, no tenía la contraseña original, así que simplemente ingresé la misma contraseña para usarla como la nueva contraseña.

Nota: no había /var/log/mysqld.log solo /var/log/mysql/error.log

  1. matar al pid actual de mysqld
  2. ejecute mysqld con sudo / usr / sbin / mysqld &
  3. ejecutar / usr / bin / mysql_secure_installation

    Salida de mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Asegurar la implementación del servidor MySQL.

    Ingrese la contraseña para el usuario root:

    VALIDAR CONTRASEÑA PLUGIN puede usarse para probar contraseñas y mejorar la seguridad. Comprueba la seguridad de la contraseña y permite a los usuarios establecer solo aquellas contraseñas que sean lo suficientemente seguras. ¿Desea configurar el complemento VALIDATE PASSWORD?

    Presione y | Y para Sí, cualquier otra tecla para No: no Uso de la contraseña existente para root. ¿Cambiar la contraseña de root? ((Presione y | Y para Sí, cualquier otra tecla para No): y

    Nueva contraseña:

    Vuelva a ingresar la nueva contraseña: de manera predeterminada, una instalación de MySQL tiene un usuario anónimo, lo que permite que cualquiera pueda iniciar sesión en MySQL sin tener que tener una cuenta de usuario creada para ellos. Esto está destinado solo para pruebas y para hacer que la instalación sea un poco más suave. Debe eliminarlos antes de pasar a un entorno de producción.

    ¿Eliminar usuarios anónimos? (Presione y | Y para Sí, cualquier otra tecla para No): y Éxito.

    Normalmente, solo se debe permitir que root se conecte desde 'localhost'. Esto garantiza que alguien no pueda adivinar la contraseña de root de la red.

    ¿No permitir el inicio de sesión root de forma remota? (Presione y | Y para Sí, cualquier otra tecla para No): y Éxito.

    Por defecto, MySQL viene con una base de datos llamada 'prueba' a la que cualquiera puede acceder. Esto también está destinado solo para pruebas y debe eliminarse antes de pasar a un entorno de producción.

    ¿Eliminar la base de datos de prueba y acceder a ella? (Presione y | Y para Sí, cualquier otra tecla para No): y

    • Caída de la base de datos de prueba ... Éxito.

    • Eliminando privilegios en la base de datos de prueba ... Éxito.

    La recarga de las tablas de privilegios garantizará que todos los cambios realizados hasta ahora surtan efecto de inmediato.

    ¿Recargar tablas de privilegios ahora? (Presione y | Y para Sí, cualquier otra tecla para No): y Éxito.

    ¡Todo listo!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.