Configuration initiale et nettoyage
Afin d'assurer un déploiement propre, il est impératif de vérifier la distribution cible et de supprimer les éventuelles instances précédentes de bases de données compatibles qui pourraient interférer avec l'installation.
Vérification de la version du système :
cat /etc/os-release | grep PRETTY_NAME
Suppression des dépendances existantes (MariaDB ou MySQL) pour éviter les conflits :
# Recherche des paquets installés
rpm -qa | grep -E '(mysql|mariadb)'
# Tentative de suppression standard
yum remove -y mysql mariadb
# En cas d'échec dû à des dépendances croisées
rpm -e --nodeps mariadb-libs
yum remove -y mysql-*
Gestion des paramètres de sécurité
Le mécanisme de contrôle d'accès obligatoire (SELinux) doit être désactivé pour permettre à MySQL d'écrire librement dans les répertoires de données définis.
Modification permanente du fichier de configuration SELinux :
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
Une réinitialisation du service ou du redémarrage complet est requise si le mode enforce est activé par défaut au démarrage.
Intégration des dépôts logiciels
L'ajout des repos officiels permet d'accéder aux versions spécifiques sans compilation manuelle. Pour CentOS 7, nous ciblerons la chaîne communautaire 5.7.
# Téléchargement et installation du paquet de libération yum
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum install -y mysql80-community-release-el7-3.noarch.rpm
# Désactivation du canal 8.0 par défaut
yum-config-manager --disable mysql80-community
# Activation explicite du canal 5.7 et installation
yum-config-manager --enable mysql57-community
yum install -y mysql-community-server
Personnalisation de la structure de données
Il est recommandé d'externaliser les fichiers de logs et les données pour faciliter la gestion des sauvegardes et des permissions.
Création et sécurisation des dossiers personnalisés :
mkdir -p /srv/mysql/data
mkdir -p /srv/mysql/logs
chown -R mysql:mysql /srv/mysql
# Configuration du fichier my.cnf principal
cat > /etc/my.cnf << 'EOF'
[mysqld]
datadir = /srv/mysql/data
socket = /srv/mysql/data/mysql.sock
pid-file = /run/mysqld/mysqld.pid
log-error = /srv/mysql/logs/error.log
symbolic-links = 0
bind-address = 0.0.0.0
EOF
Initialisation et accès administrateur
Après le premier lancement du service, un mot de passe temporaire généré automatiquement apparaît dans les journaux. La procédure suivante met à jour ces identifiants et configure l'accès distant.
# Redémarrage du service et vérification
systemctl daemon-reload
systemctl start mysqld
systemctl status mysqld
# Récupération du mot de passe provisoire
cat /srv/mysql/logs/error.log | grep 'temporary password'
# Connexion et modification de l'identifiant racine
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NouveauMotDePasse!';
FLUSH PRIVILEGES;
Attribution des privilèges étendus
Pour autoriser des connexions hors de la machine locale, il faut accorder les droits appropriés via SQL :
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NouveauMotDePasse!' WITH GRANT OPTION;
FLUSH PRIVILEGES;
La gestion directe du binaire peut également servir si le système de services rencontre des dysfonctionnements :
/usr/sbin/mysqld_safe --user=mysql --basedir=/usr/local/bin &
grep 'temporary password' /var/log/mysql/error.log