Ansible

Comment définir le mot de passe racine MySQL à l'aide d'Ansible

Comment définir le mot de passe racine MySQL à l'aide d'Ansible
La plupart des distributions Linux, y compris CentOS/RHEL et Ubuntu/Debian, ne définissent pas automatiquement le mot de passe root MySQL. Comme le mot de passe root MySQL n'est pas défini automatiquement, on peut se connecter à la console MySQL en tant que root 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 root. 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 root MySQL sur CentOS 8 et Ubuntu 20.04 distributions Linux LTS utilisant des modules Ansible.

Conditions préalables


Si vous voulez essayer les exemples inclus dans cet article,

1) Vous devez avoir Ansible installé sur votre ordinateur.

2) Vous devez avoir au moins un hôte CentOS/RHEL 8 ou un Ubuntu 20.04 Hôte LTS configuré pour l'automatisation Ansible.

Il existe de nombreux articles sur LinuxHint dédiés à l'installation d'Ansible et à la configuration des hôtes pour l'automatisation d'Ansible. Vous pouvez les consulter si besoin.

Configuration d'un répertoire de projet

Avant d'aller plus loin, nous allons mettre en place un nouveau répertoire de projet Ansible, juste pour garder les choses un peu organisées.

Pour créer le répertoire du 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 :

$ nano hôtes

Ajoutez l'adresse IP ou les noms DNS 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 Oui et .

Ici, j'ai créé deux groupes, centos8, et ubuntu20. le centos8 groupe a le nom DNS de mon hôte CentOS 8, vm3.nœudkite.com; et le ubuntu20 groupe a le nom DNS de mon Ubuntu 20.04 Hôte LTS, vm7.nœudkite.com.

Créer un fichier de configuration Ansible ansible.cfg dans votre répertoire de projet, comme suit :

$ nano ansible.cfg

Tapez les lignes suivantes dans le ansible.cfg déposer:

[valeurs par défaut]
inventaire           = hôtes
host_key_checking   = False

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

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

$ ansible all -u ansible -m ping

Comme vous pouvez le voir, l'hôte my CentOS 8 (vm3.nœudkite.com) et Ubuntu 20.04 hôte LTS (vm7.nœudkite.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 root sur CentOS 8 à l'aide d'Ansible. La même procédure devrait fonctionner sur RHEL 8.

Créer le nouveau playbook Ansible install_mysql_centos8.yaml dans le cahiers/ 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 : Mettre à jour le cache du référentiel du package DNF
dnf :
update_cache : vrai
- nom : Installer le serveur MySQL sur CentOS 8
dnf :
nom : mysql-server
état : présent
- nom : Installer le client MySQL sur CentOS 8
dnf :
nom : mysql
état : présent
- name : assurez-vous que le service mysqld est en cours d'exécution
un service:
nom : mysqld
état : commencé
activé : vrai

- nom : Installer la bibliothèque python3-PyMySQL
dnf :
nom : python3-PyMySQL
état : présent

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

La ligne ci-dessous indique à Ansible d'exécuter le playbook install_mysql_centos8.yaml sur chaque hôte du centos8 grouper.

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

La première tâche met à jour le cache du référentiel de packages DNF de CentOS 8 à l'aide d'Ansible dnf module.

La deuxième tâche installe le package du serveur MySQL serveur mysql en utilisant l'Ansible dnf module.

La troisième tâche installe le package client MySQL mysql en utilisant 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 démarre automatiquement au démarrage.

La cinquième tâche installe la bibliothèque MySQL Python 3 pymysql. Ceci est requis pour accéder à MySQL à partir d'Ansible.

Exécutez le install_mysql_centos8.yaml livre de jeu, comme suit :

$ ansible-playbook playbooks/install_mysql_centos8.yaml

Comme vous pouvez le voir, le playbook install_mysql_centos8.yaml exécuté avec succès.

Sur mon hôte CentOS 8, je peux accéder à MySQL en tant que racine utilisateur sans 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 root pour le serveur MySQL.

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

$ nano group_vars/centos8

Ajouter une nouvelle variable mysql_pass avec le mot de passe root (dans mon cas, secret) 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 Oui 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éfinir le mot de passe root MySQL
mysql_user :
login_host : 'localhost'
login_user : 'root'
mot de passe: "
nom : 'racine'
mot de passe : ' mysql_pass '
état : présent

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

Ce livre de jeu utilise le mysql_user Module Ansible pour définir un mot de passe root MySQL.

le login_host, login_user, et mot de passe choix 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 de connexion MySQL, respectivement. 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 le mot de passe (mot de passe) est vide (") sur CentOS 8.

le le mot de passe option de la mysql_user Le module Ansible est utilisé pour définir un nouveau mot de passe root MySQL, ici. Le mot de passe root MySQL sera la valeur du mysql_pass variable de groupe définie précédemment.

Exécuter le playbook set_root_pass_centos8.yaml avec la commande suivante :

$ ansible-playbook playbooks/set_root_pass_centos8.yaml

Le playbook s'est exécuté avec succès, comme le montre la capture d'écran ci-dessous :

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

Pour vous connecter au serveur MySQL en tant que 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 root que vous avez défini à l'aide d'Ansible et appuyez sur .

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

Installation de MySQL et configuration du mot de passe root 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 root sur Ubuntu 20.04 LTS avec Ansible.

Créer un nouveau playbook Ansible install_mysql_ubuntu20.yaml dans le cahiers/ 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 : Mettre à jour le cache du référentiel de packages APT
apte:
update_cache : vrai
- nom : Installer le serveur MySQL sur Ubuntu 20.04 LTS
apte:
nom : mysql-server
état : présent
- nom : Installer le client MySQL sur Ubuntu 20.04 LTS
apte:
nom : mysql-client
état : présent
- name: Assurez-vous que le service mysql est en cours d'exécution
un service:
nom : mysql
état : commencé
activé : vrai
- nom : installer la bibliothèque python3-pymysql
apte:
nom : python3-pymysql
état : présent

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

La ligne suivante indique à Ansible d'exécuter le playbook install_mysql_ubuntu20.yaml sur chaque hôte du ubuntu20 grouper:

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

La première tâche met à jour le cache du référentiel de packages APT d'Ubuntu 20.04 LTS avec Ansible apte module.

La deuxième tâche installe le package du serveur MySQL serveur mysql en utilisant l'Ansible apte module.

La troisième tâche installe le package client MySQL mysql en utilisant 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 démarre automatiquement au 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.

Exécutez le install_mysql_ubuntu20.yaml livre de jeu, comme suit :

$ ansible-playbook playbooks/install_mysql_ubuntu20.yaml

Comme vous pouvez le voir, le playbook install_mysql_ubuntu20.yaml exécuté avec succès.

Sur mon Ubuntu 20.04 Hôte LTS, je peux accéder à MySQL en tant que racine utilisateur sans 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 root pour le serveur MySQL.

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

$ nano group_vars/ubuntu20

Ajouter une nouvelle variable, mysql_pass, avec le mot de passe root (dans mon cas, très secret) 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 Oui 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:
- name : remplacez le plugin d'authentification de l'utilisateur root MySQL par mysql_native_password
shell : mysql -u root -e 'UPDATE mysql.user SET plugin="mysql_native_password"
O user="root" AND host="localhost"'
- nom : Rincer les privilèges
shell : mysql -u root -e 'FLUSH PRIVILEGES'
- nom : définir le mot de passe root MySQL
mysql_user :
login_host : 'localhost'
login_user : 'root'
mot de passe: "
nom : 'racine'
mot de passe : ' mysql_pass '
état : présent

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

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

La première tâche change le plugin d'authentification de MySQL racine utilisateur de auth_socket à mysql_native_password.

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

La troisième tâche utilise le mysql_user Module Ansible pour définir un mot de passe root MySQL.

Dans la troisième tâche, le login_host, login_user, et mot de passe choix 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 de connexion MySQL, respectivement. 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 le mot de passe (mot de passe) est vide (") sur le système.

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

Exécuter le playbook set_root_pass_ubuntu20.yaml avec la commande suivante :

$ ansible-playbook playbooks/set_root_pass_ubuntu20.yaml

Le playbook s'est exécuté 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 root.

$ sudo mysql -u racine

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

$ sudo mysql -u root -p

Tapez le mot de passe root que vous avez défini à l'aide d'Ansible et appuyez sur .

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

Conclusion

Cet article vous a montré comment installer le serveur MySQL et définir un mot de passe root MySQL sur CentOS 8 et Ubuntu 20.04 distributions Linux LTS utilisant Ansible. Cet article a utilisé le mysql_user Module Ansible pour configurer le mot de passe root MySQL. Vous pouvez utiliser ce module pour modifier le mot de passe root MySQL, créer de nouveaux utilisateurs MySQL et effectuer de nombreuses autres fonctions de gestion des utilisateurs.

Pour plus d'informations sur le mysql_user module, consultez la documentation officielle du module mysql_user.

Installez le dernier jeu de stratégie OpenRA sur Ubuntu Linux
OpenRA est un moteur de jeu de stratégie en temps réel libre/gratuit qui recrée les premiers jeux Westwood comme le classique Command & Conquer: Red A...
Installez le dernier émulateur Dolphin pour Gamecube et Wii sur Linux
L'émulateur Dolphin vous permet de jouer aux jeux Gamecube et Wii de votre choix sur des ordinateurs personnels Linux (PC). Étant un émulateur de jeu...
Comment utiliser le moteur de triche GameConqueror sous Linux
L'article couvre un guide sur l'utilisation du moteur de triche GameConqueror sous Linux. De nombreux utilisateurs qui jouent à des jeux sur Windows u...