web-dev-qa-db-fra.com

Changer le mot de passe mysql dans le conteneur Docker

Comment pourrais-je changer le mot de passe root dans le conteneur Docker puisque le conteneur s'arrête automatiquement une fois que j'arrête le service mysql.

Dois-je arrêter le conteneur mysql et en déployer un nouveau?

12
胡亦朗

Vous pouvez le changer à partir d'un conteneur en cours d'exécution, en utilisant une session docker exec , comme décrit dans " Connexion au serveur MySQL depuis le conteneur "

Une fois le serveur prêt, vous pouvez exécuter le client mysql dans le conteneur MySQL Server que vous venez de démarrer et le connecter au serveur MySQL.
Utilisez la commande docker exec -it Pour démarrer un client mysql dans le conteneur Docker que vous avez démarré, comme ceci:

docker exec -it mysql1 mysql -uroot -p

Lorsque vous y êtes invité, entrez le mot de passe root généré (voir les instructions ci-dessus pour savoir comment le trouver). Parce que l'option MYSQL_ONETIME_PASSWORD Est vraie par défaut, après avoir démarré le conteneur de serveur avec l'exemple de commande ci-dessus et connecté un client mysql au serveur, vous devez réinitialiser le mot de passe racine du serveur en émettant cette instruction pour MySQL 5.7 et supérieur :

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

ou bien courir,

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

Pour les anciennes versions de MySQL 5.7, exécutez,

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

Remplacez newpassword par le mot de passe de votre choix. Une fois le mot de passe réinitialisé, le serveur est prêt à l'emploi.

Ensuite, comme décrit dans " hub.docker.com/mysql ", n'oubliez pas secrets du docker :

Au lieu de transmettre des informations sensibles via des variables d'environnement, _FILE Peut être ajouté aux variables d'environnement précédemment répertoriées, ce qui oblige le script d'initialisation à charger les valeurs de ces variables à partir des fichiers présents dans le conteneur.
En particulier, il peut être utilisé pour charger des mots de passe à partir de secrets Docker stockés dans des fichiers /run/secrets/<secret_name>.
Par exemple:

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