79651847

Date: 2025-06-03 20:18:37
Score: 4
Natty:
Report link

Voici un **guide complet pour installer MySQL sur un serveur Red Hat (RHEL, CentOS, AlmaLinux ou Rocky Linux)** et créer **deux instances MySQL distinctes** sur le même serveur.

---

## 🛠️ Objectif

- Installer **MySQL Server**

- Créer **deux instances MySQL indépendantes**

- Chaque instance aura :

---

## 🔧 Étape 1 : Installer MySQL Server

### 1. Ajouter le dépôt MySQL officiel

```bash

sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el9-7.noarch.rpm

```

\> Remplacer `el9` par votre version RHEL (`el7`, `el8`, etc.)

### 2. Installer MySQL Server

```bash

sudo dnf install mysql-server

```

---

## ⚙️ Étape 2 : Démarrer et activer l'instance par défaut

```bash

sudo systemctl enable mysqld

sudo systemctl start mysqld

```

### Récupérer le mot de passe temporaire root

```bash

sudo grep 'temporary password' /var/log/mysqld.log

```

Sécuriser l’installation :

```bash

sudo mysql_secure_installation

```

---

## 📁 Étape 3 : Préparer la deuxième instance

### 1. Créer un nouveau répertoire de données

```bash

sudo mkdir /var/lib/mysql2

sudo chown -R mysql:mysql /var/lib/mysql2

```

### 2. Initialiser la base de données pour la seconde instance

```bash

sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql2

```

\> ✅ Sauvegarder le mot de passe généré affiché dans les logs :

```bash

sudo cat /var/log/mysqld.log | grep "A temporary password"

```

---

## 📄 Étape 4 : Créer un fichier de configuration personnalisé pour la seconde instance

```bash

sudo nano /etc/my-2.cnf

```

Collez-y cette configuration :

```ini

[client]

port = 3307

socket = /var/lib/mysql2/mysql.sock

[mysqld]

port = 3307

socket = /var/lib/mysql2/mysql.sock

datadir = /var/lib/mysql2

pid-file = /var/lib/mysql2/mysqld.pid

server-id = 2

log-error = /var/log/mysqld2.log

```

Enregistrer et fermer.

### Créer le fichier log

```bash

sudo touch /var/log/mysqld2.log

sudo chown mysql:mysql /var/log/mysqld2.log

```

---

## 🔄 Étape 5 : Créer un service systemd pour la seconde instance

```bash

sudo nano /etc/systemd/system/mysqld2.service

```

Collez ce contenu :

```ini

[Unit]

Description=MySQL Second Instance

After=network.target

[Service]

User=mysql

Group=mysql

ExecStart=/usr/bin/mysqld --defaults-file=/etc/my-2.cnf --basedir=/usr --plugin-dir=/usr/lib64/mysql/plugin

ExecStop=/bin/kill -SIGTERM $MAINPID

Restart=always

PrivateTmp=false

[Install]

WantedBy=multi-user.target

```

Recharger systemd :

```bash

sudo systemctl daemon-reexec

sudo systemctl daemon-reload

```

Activer et démarrer le service :

```bash

sudo systemctl enable mysqld2

sudo systemctl start mysqld2

```

Vérifier le statut :

```bash

sudo systemctl status mysqld2

```

---

## 🔐 Étape 6 : Sécuriser la seconde instance

Connectez-vous à la seconde instance avec le mot de passe temporaire :

```bash

mysql -u root -p -h 127.0.0.1 -P 3307

```

Exécutez ces commandes SQL pour changer le mot de passe :

```sql

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NouveauMotDePasse';

FLUSH PRIVILEGES;

exit

```

---

## 🧪 Étape 7 : Tester les deux instances

### Vérifier les ports utilisés :

```bash

ss -tuln | grep -E '3306|3307'

```

### Se connecter à chaque instance :

Instance 1 :

```bash

mysql -u root -p

```

Instance 2 :

```bash

mysql -u root -p -h 127.0.0.1 -P 3307

```

---

## 📌 Résumé des deux instances

| Instance | Port | Fichier Config | Données | Service Systemd | PID File | Log File |

|---------|------|--------------------|----------------|------------------|------------------------|--------------------|

| Default | 3306 | `/etc/my.cnf` | `/var/lib/mysql` | `mysqld` | `/var/run/mysqld/mysqld.pid` | `/var/log/mysqld.log` |

| Second | 3307 | `/etc/my-2.cnf` | `/var/lib/mysql2`| `mysqld2` | `/var/lib/mysql2/mysqld.pid` | `/var/log/mysqld2.log` |

---

## ✅ Vous avez terminé !

Vous avez maintenant **deux instances MySQL indépendantes** fonctionnant sur le même serveur Red Hat.

Chaque instance peut être gérée séparément via ses propres commandes :

```bash

sudo systemctl start/stop/restart mysqld

sudo systemctl start/stop/restart mysqld2

```

---

## ❓ Besoin d’un script Bash pour automatiser cette installation ?

Je peux vous fournir un **script Bash** qui fait tout cela automatiquement.

Souhaitez-vous que je vous le fournisse ?

Reasons:
  • Long answer (-1):
  • No code block (0.5):
  • Ends in question mark (2):
  • Filler text (0.5): ---------
  • Filler text (0): --------------------
  • Filler text (0): ----------------
  • Filler text (0): ------------------
  • Filler text (0): ------------------------
  • Filler text (0): --------------------
  • Looks like a comment (1):
  • Low reputation (1):
Posted by: hani amri