Saltar al contenido

Cambiar la contraseña de mysql en el contenedor de Docker

Solución:

Podrías cambiarlo de un contenedor en ejecución, usando un docker exec sesión, como se describe en “Conexión a MySQL Server desde dentro del contenedor”

Una vez que el servidor está listo, puede ejecutar el cliente mysql dentro del contenedor del servidor MySQL que acaba de iniciar y conectarlo al servidor MySQL.
Utilizar el docker exec -it comando para iniciar un mysql cliente dentro del contenedor Docker que ha iniciado, así:

docker exec -it mysql1 mysql -uroot -p

Cuando se le solicite, ingrese la contraseña de root generada (consulte las instrucciones anteriores sobre cómo encontrarla). Porque el MYSQL_ONETIME_PASSWORD La opción es verdadera de forma predeterminada, después de iniciar el contenedor del servidor con el comando de muestra anterior y conectar un cliente mysql al servidor, debe restablecer la contraseña raíz del servidor emitiendo esta declaración para MySQL 5.7 y superior:

mysql> update user set authentication_string=password('new_password') where user="root";

o alternativamente ejecutar,

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');

Para MySQL 5.7 y versiones anteriores, ejecute,

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

Sustituir newpassword con la contraseña de su elección. Una vez que se restablece la contraseña, el servidor está listo para su uso.

Tenga en cuenta que el comando anterior solo cambiará la contraseña para ‘root’ que se conecta desde el host ‘localhost’. Puede verificar esto usando el comando:

select * from mysql.user;

Para modificar la contraseña de ‘root’ de todos los hosts, use:

ALTER USER 'root'@'%' IDENTIFIED BY 'newpassword';

Entonces, como se describe en “hub.docker.com/mysql“, no olvides los secretos de Docker:

Como alternativa a la transmisión de información confidencial a través de variables de entorno, _FILE se puede agregar a las variables de entorno enumeradas anteriormente, lo que hace que el script de inicialización cargue los valores para esas variables de los archivos presentes en el contenedor.
En particular, esto se puede utilizar para cargar contraseñas de secretos de Docker almacenados en /run/secrets/<secret_name> archivos.
Por ejemplo:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag

Primero vaya al bash del contenedor de la ventana acoplable usando

docker exec -it containerId bash

Luego

  • Para establecer la nueva contraseña de mysql

    mysqladmin -u root -p'oldpassword' password 'newpassword'

  • Para establecer la contraseña vacía, use

    mysqladmin -u root -p'oldpassword' password ''

Asegúrese de que no haya espacio entre -p y oldpassword

En caso de que haya olvidado la contraseña anterior, puede restablecerla siguiendo algunos pasos. Escribí un tutorial sobre cómo hacerlo (puede mostrar su apoyo dando algunos aplausos): https://medium.com/@marinbinzari/reset-root-mysql-password-in-docker-d961c71285e4

TLDR: crear un mysql-init.sql archivo con las consultas para restablecer la contraseña:

USE mysql;
UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User="root";
FLUSH PRIVILEGES;

Monte el archivo en el /tmp carpeta, ejecute el contenedor (no ejecute para que MySQLD no se inicie) y luego inicie mysqld con el script de inicio.

mysqld_safe --init-file=/tmp/mysql-init.sql &

Intente conectarse, salga del contenedor de la ventana acoplable y comience a usar la nueva contraseña

Oh, y nunca más vuelvas a olvidar tu contraseña

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *