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 eldocker exec -it
comando para iniciar unmysql
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