Comment définir le mot de passe racine mysql en utilisant Anible

Comment définir le mot de passe racine mysql en utilisant Anible
La plupart des distributions Linux, y compris Centos / Rhel et Ubuntu / Debian, ne définissent pas automatiquement le mot de passe racine MySQL. Comme le mot de passe racine MySQL n'est pas automatiquement défini, on peut se connecter à la console MySQL comme racine sans aucun mot de passe. Ce n'est pas très bon pour la sécurité.

Sur Centos / Rhel, vous pouvez facilement exécuter le mysql_secure_installation Commande pour configurer un mot de passe racine. Mais sur Ubuntu 20.04 LTS, cette méthode ne fonctionne pas, car MySQL utilise un plugin d'authentification différent pour le racine utilisateur.

Cet article vous montrera comment configurer un mot de passe racine MySQL sur CentOS 8 et Ubuntu 20.04 Distributions LTS Linux utilisant des modules ANSIBL.

Conditions préalables


Si vous souhaitez essayer les exemples inclus dans cet article,

1) Vous devez faire installer un anible sur votre ordinateur.

2) Vous devez avoir au moins un hôte Centos / Rhel 8 ou un Ubuntu 20.04 LTS Hôte configuré pour ANSIBLE AUTOMATION.

Il existe de nombreux articles sur Linuxhint dédiés à l'installation de Ansible et à la configuration des hôtes pour ANSIBLE AUTOMATION. Vous pouvez les vérifier si nécessaire.

Configuration d'un répertoire de projet

Avant de passer plus loin, nous créerons un nouveau répertoire de projet ANSIBLE, juste pour garder les choses un peu organisées.

Pour créer le répertoire de projet mysql-root-pass / et tous les sous-répertoires requis (dans votre répertoire de travail actuel), exécutez la commande suivante:

$ mkdir -pv mysql-root-pass / playbooks, host_vars, group_vars

Une fois le répertoire du projet créé, accédez au répertoire du projet, comme suit:

$ cd mysql-root-pass /

Créer un hôtes Fichier d'inventaire, comme suit:

$ hôtes nano

Ajoutez les noms IP ou DNS de l'hôte de votre Centos / Rhel 8 ou Ubuntu 20.04 hôtes LTS dans le fichier d'inventaire (un hôte par ligne), comme indiqué dans la capture d'écran ci-dessous.

Une fois que vous avez terminé, enregistrez le fichier en appuyant sur + X, suivie par Y et .

Ici, j'ai créé deux groupes, centos8, et ubuntu20. Le centos8 Groupe a le nom DNS de mon hôte Centos 8, VM3.nodekite.com; et le ubuntu20 Groupe a le nom DNS de mon Ubuntu 20.04 hôte LTS, VM7.nodekite.com.

Créer un fichier de configuration anible anable.CFG Dans votre répertoire de projet, comme suit:

$ nano anible.CFG

Tapez les lignes suivantes dans le anable.CFG déposer:

[Par défaut]
Inventaire = hôtes
host_key_checking = false

Une fois que vous avez terminé, enregistrez le anable.CFG fichier en appuyant sur + X, suivie par Y et .

Essayez de pinging tous les hôtes que vous avez ajoutés dans votre hôtes Fichier d'inventaire, comme suit:

$ anible all -u anible -m ping

Comme vous pouvez le voir, l'hôte My Centos 8 (VM3.nodekite.com) et ubuntu 20.04 hôte LTS (VM7.nodekite.com) sont accessibles.

Installation de MySQL et configuration du mot de passe racine sur Centos / Rhel 8

Cette section vous montrera comment installer le serveur de base de données MySQL et configurer un mot de passe racine sur CentOS 8 en utilisant Anible. La même procédure doit fonctionner sur RHEL 8.

Créer le nouveau manuel ANSIBLE install_mysql_centos8.yaml dans le Playbooks / Répertoire, comme suit:

$ nano playbooks / install_mysql_centos8.yaml

Tapez les lignes suivantes dans le install_mysql_centos8.yaml déposer:

- Hôtes: CentOS8
Utilisateur: ANSIBLE
devenir vrai
Tâches:
- Nom: Mettez à jour le cache du référentiel du package DNF
DNF:
Update_cache: true
- Nom: Installez MySQL Server sur CentOS 8
DNF:
Nom: MySQL-Server
État: présent
- Nom: Installez le client MySQL sur CentOS 8
DNF:
Nom: Mysql
État: présent
- Nom: assurez-vous que le service MySQLD est en cours d'exécution
service:
Nom: MySQLD
État: commencé
Activé: vrai

- Nom: Installez la bibliothèque Python3-Pymysql
DNF:
Nom: python3-pymysql
État: présent

Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le install_mysql_centos8.yaml déposer.

La ligne ci-dessous dit à Ansible d'exécuter le livre de jeu install_mysql_centos8.yaml sur chaque hôte du centos8 groupe.

Ici, j'ai défini 5 tâches.

La première tâche met à jour le cache du référentiel du package DNF de CentOS 8 en utilisant l'anible DNF module.

La deuxième tâche installe le package MySQL Server mysql-server Utilisation de l'ANSIBLE DNF module.

La troisième tâche installe le package client MySQL mysql Utilisation de l'ANSIBLE DNF module.

La quatrième tâche garantit que le mysqld Le service est en cours d'exécution et qu'il a été ajouté au démarrage du système afin qu'il commence automatiquement sur le démarrage.

La cinquième tâche installe la bibliothèque MySQL Python 3 pymysql. Ceci est nécessaire pour accéder à MySQL depuis ANSIBLE.

Courir le install_mysql_centos8.yaml Playbook, comme suit:

$ anible-playbook playbooks / install_mysql_centos8.yaml

Comme vous pouvez le voir, le livre de jeu install_mysql_centos8.yaml Ran avec succès.

Sur mon hôte Centos 8, je peux accéder à MySQL comme le racine Utilisateur sans aucun mot de passe, comme vous pouvez le voir dans la capture d'écran ci-dessous:

$ sudo mysql -u racine

Maintenant que le serveur MySQL est installé, il est temps de configurer un mot de passe racine pour le serveur MySQL.

Créer le nouveau fichier de variable de groupe centos8 (dans le group_vars / répertoire) pour le centos8 groupe, comme suit:

$ nano group_vars / centos8

Ajouter une nouvelle variable mysql_pass avec le mot de passe racine (dans mon cas, secret) Vous souhaitez définir, comme indiqué dans la capture d'écran ci-dessous.

Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour enregistrer le fichier.

Créer un nouveau livre de jeu set_root_pass_centos8.yaml avec la commande suivante:

$ nano playbooks / set_root_pass_centos8.yaml

Tapez les lignes suivantes dans le set_root_pass_centos8.yaml déposer:

- Hôtes: CentOS8
Utilisateur: ANSIBLE
devenir vrai
Tâches:
- Nom: Définissez le mot de passe racine MySQL
mysql_user:
Login_host: «LocalHost»
login_user: 'root'
mot de passe: "
Nom: 'Root'
mot de passe: 'mysql_pass'
État: présent

Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le set_root_pass_centos8.yaml déposer.

Ce playbook utilise le mysql_user Module anible pour définir un mot de passe racine mysql.

Le Login_host, Login_user, et mot de passe Options de la mysql_user Le module ANSIBLE est utilisé pour définir le nom d'hôte, le nom d'utilisateur et le mot de passe actuels. Par défaut, le nom d'hôte de connexion MySQL (Login_host) est le hôte local, le nom d'utilisateur de connexion (Login_user) est le racine, Et la connexion mot de passe (mot de passe) est vide (") sur Centos 8.

Le mot de passe option du mysql_user Le module ANSIBLE est utilisé pour définir un nouveau mot de passe root MySQL, ici. Le mot de passe racine MySQL sera la valeur du mysql_pass Variable de groupe qui a été définie plus tôt.

Exécutez le livre de jeu set_root_pass_centos8.yaml avec la commande suivante:

$ anible-playbook playbooks / set_root_pass_centos8.yaml

Le Playbook a fonctionné avec succès, comme on le voit dans la capture d'écran ci-dessous:

Comme vous pouvez le voir, je ne peux plus me connecter au serveur MySQL sans mot de passe racine.

Pour se connecter au serveur MySQL comme le racine Utilisateur avec un mot de passe, exécutez la commande suivante sur votre hôte CentOS 8:

$ sudo mysql -u root -p

Tapez le mot de passe racine que vous avez défini en utilisant ANSIBLE et appuyez sur .

Vous devez être connecté au serveur MySQL comme le racine utilisateur.

Installation de MySQL et configuration du mot de passe racine sur Ubuntu 20.04 LTS

Cette section vous montrera comment installer le serveur de base de données MySQL et configurer un mot de passe racine sur Ubuntu 20.04 LTS Utilisation d'ANSIBLE.

Créer un nouveau manuel ANSIBLE install_mysql_ubuntu20.yaml dans le Playbooks / Répertoire, comme suit:

$ nano playbooks / install_mysql_ubuntu20.yaml

Tapez les lignes suivantes dans le install_mysql_ubuntu20.yaml déposer:

- Hôtes: Ubuntu20
Utilisateur: ANSIBLE
devenir vrai
Tâches:
- Nom: Mettez à jour le cache du référentiel de packages APT
apte:
Update_cache: true
- Nom: Installez MySQL Server sur Ubuntu 20.04 LTS
apte:
Nom: MySQL-Server
État: présent
- Nom: Installez le client mysql sur Ubuntu 20.04 LTS
apte:
Nom: MySQL-Client
État: présent
- Nom: assurez-vous que le service MySQL est en cours d'exécution
service:
Nom: Mysql
État: commencé
Activé: vrai
- Nom: Installez la bibliothèque Python3-Pymysql
apte:
Nom: python3-pymysql
État: présent

Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le install_mysql_ubuntu20.yaml déposer.

La ligne suivante indique à ANSIBLE d'exécuter le livre de jeu install_mysql_ubuntu20.yaml sur chaque hôte du ubuntu20 groupe:

Ici, j'ai défini 5 tâches.

La première tâche met à jour le cache référentiel du package APT d'Ubuntu 20.04 LTS Utilisation de l'ANSIBLE apte module.

La deuxième tâche installe le package MySQL Server mysql-server Utilisation de l'ANSIBLE apte module.

La troisième tâche installe le package client MySQL mysql Utilisation de l'ANSIBLE apte module.

La quatrième tâche s'assure que le mysql Le service est en cours d'exécution et qu'il a été ajouté au démarrage du système afin qu'il commence automatiquement sur le démarrage.

La cinquième tâche installe la bibliothèque MySQL Python 3 pymysql. Ceci est nécessaire pour accéder à MySQL depuis ANSIBLE.

Courir le install_mysql_ubuntu20.yaml Playbook, comme suit:

$ anible-playbook playbooks / install_mysql_ubuntu20.yaml

Comme vous pouvez le voir, le livre de jeu install_mysql_ubuntu20.yaml Ran avec succès.

Sur mon ubuntu 20.04 hôte LTS, je peux accéder à MySQL comme le racine Utilisateur sans aucun mot de passe, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo mysql -u racine

Maintenant que le serveur MySQL est installé, il est temps de configurer un mot de passe racine pour le serveur MySQL.

Créer un nouveau fichier de variable de groupe ubuntu20 (dans le group_vars / répertoire) pour le ubuntu20 groupe, comme suit:

$ nano group_vars / ubuntu20

Ajouter une nouvelle variable, mysql_pass, avec le mot de passe racine (dans mon cas, très bien sûr) que vous souhaitez définir, comme indiqué dans la capture d'écran ci-dessous.

Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour enregistrer le fichier.

Créer un nouveau livre de jeu set_root_pass_ubuntu20.yaml avec la commande suivante:

$ nano playbooks / set_root_pass_ubuntu20.yaml

Tapez les lignes suivantes dans le set_root_pass_ubuntu20.yaml déposer:

- Hôtes: Ubuntu20
Utilisateur: ANSIBLE
devenir vrai
Tâches:
- Nom: Modifiez le plugin d'authentification de l'utilisateur root MySQL vers MySQL_NATIVE_PASSWORD
shell: mysql -u root -e 'mise à jour mysql.set utilisateur plugin = "mysql_native_password"
Où user = "root" et host = "localhost" '
- Nom: Privilèges de rinçage
Shell: Mysql -u root -e 'Flush Privileges'
- Nom: Définissez le mot de passe racine MySQL
mysql_user:
Login_host: «LocalHost»
login_user: 'root'
mot de passe: "
Nom: 'Root'
mot de passe: 'mysql_pass'
État: présent

Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le set_root_pass_ubuntu20.yaml déposer.

Ici, j'ai défini trois tâches.

La première tâche modifie le plugin d'authentification du mysql racine utilisateur de auth_socket pour mysql_native_password.

La deuxième tâche recharge tous les privilèges.

La troisième tâche utilise le mysql_user Module anible pour définir un mot de passe racine mysql.

Dans la troisième tâche, le Login_host, Login_user, et mot de passe Options de la mysql_user Le module ANSIBLE est utilisé pour définir le nom d'hôte, le nom d'utilisateur et le mot de passe actuels. Par défaut, le nom d'hôte de connexion MySQL (Login_host) est hôte local, le nom d'utilisateur de connexion (Login_user) est racine, Et la connexion mot de passe (mot de passe) est vide (") sur le système.

Ici le mot de passe option du mysql_user Le module ANSIBLE est utilisé pour définir un nouveau mot de passe racine MySQL. Le mot de passe racine MySQL sera la valeur du mysql_pass variable de groupe, que j'ai définie plus tôt, dans le groupe_vars / ubuntu20 déposer.

Exécutez le livre de jeu set_root_pass_ubuntu20.yaml avec la commande suivante:

$ anible-playbook playbooks / set_root_pass_ubuntu20.yaml

Le Playbook a fonctionné avec succès, comme vous pouvez le voir dans la capture d'écran ci-dessous:

Comme vous pouvez le voir, je ne peux plus me connecter au serveur MySQL sans mot de passe racine.

$ sudo mysql -u racine

Pour vous connecter au serveur MySQL en tant qu'utilisateur racine avec le mot de passe SET, exécutez la commande suivante sur votre Ubuntu 20.04 hôte LTS:

$ sudo mysql -u root -p

Tapez le mot de passe racine que vous avez défini en utilisant ANSIBLE et appuyez sur .

Vous devez être connecté au serveur MySQL en tant qu'utilisateur racine.

Conclusion

Cet article vous a montré comment installer le serveur MySQL et définir un mot de passe racine MySQL sur CentOS 8 et Ubuntu 20.04 Distributions LTS Linux en utilisant ANSIBLE. Cet article a utilisé le mysql_user Module anible pour configurer le mot de passe racine mysql. Vous pouvez utiliser ce module pour modifier le mot de passe racine MySQL, créer de nouveaux utilisateurs MySQL et pour bien plus de fonctions de gestion des utilisateurs.

Pour plus d'informations sur le mysql_user Module, vérifiez la documentation officielle du module MySQL_USER.