Guide MariaDB
Linux et Kubernetes — tout ce qu'il faut savoir pour commencer.
Installation Linux
Sur Debian / Ubuntu :
sudo apt update && sudo apt install mariadb-server -y
Securiser l'installation (mot de passe root, suppression des users anonymes) :
sudo mysql_secure_installation
Connexion Linux
En root (via sudo)
Par defaut sur Debian/Ubuntu, root se connecte via le plugin unix_socket (pas de mot de passe) :
sudo mariadb
Avec un utilisateur et mot de passe
mariadb -u mon_user -p
# ou avec le host distant :
mariadb -h 192.168.1.10 -u mon_user -p ma_base
| Option | Description |
|---|---|
-h | Adresse du serveur (defaut : localhost) |
-P | Port (defaut : 3306) |
-u | Nom d'utilisateur |
-p | Demande le mot de passe |
-e | Executer une commande SQL directement |
Exemple : lancer une requete sans entrer dans le shell interactif :
mariadb -u root -p -e "SHOW DATABASES;"
Service systemd Linux
| Action | Commande |
|---|---|
| Demarrer | sudo systemctl start mariadb |
| Arreter | sudo systemctl stop mariadb |
| Redemarrer | sudo systemctl restart mariadb |
| Statut | sudo systemctl status mariadb |
| Demarrage auto | sudo systemctl enable mariadb |
SQL de base Linux
SHOW DATABASES;
USE nom_base;
SHOW TABLES;
DESCRIBE ma_table;
CREATE DATABASE ma_base;
DROP DATABASE ma_base;
Utilisateurs & Droits Linux
Creer un user qui accepte les connexions de n'importe ou (%) :
CREATE USER 'admin'@'%' IDENTIFIED BY 'mot_de_passe_fort';
Donner tous les droits sur une base :
GRANT ALL PRIVILEGES ON ma_base.* TO 'admin'@'%';
FLUSH PRIVILEGES;
Voir les droits d'un user :
SHOW GRANTS FOR 'admin'@'%';
'%' qu'en dev. En prod, remplace par l'IP precise.Sauvegardes Linux
Exporter une base :
mariadb-dump -u root -p ma_base > backup.sql
Importer un dump :
mariadb -u root -p ma_base < backup.sql
Helm Bitnami Kubernetes
Le chart Helm officiel Bitnami est la facon la plus simple de deployer MariaDB sur Kubernetes.
Installer Helm et ajouter le repo
# Ajouter le repo Bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Deploiement minimal
helm install mon-mariadb bitnami/mariadb \
--set auth.rootPassword=monRootPass \
--set auth.database=ma_base \
--set auth.username=mon_user \
--set auth.password=monPass
Parametres cles du chart 12.0
| Parametre | Defaut | Description |
|---|---|---|
auth.rootPassword | — | Mot de passe du compte root |
auth.database | my_database | Base creee au demarrage |
auth.username | — | User cree automatiquement |
auth.password | — | Mot de passe de ce user |
primary.persistence.size | 8Gi | Taille du volume persistant |
primary.resources.requests.memory | 256Mi | RAM minimale demandee |
architecture | standalone | standalone ou replication |
Manifest YAML Kubernetes
Exemple de fichier values.yaml complet pour le chart Bitnami 12.0 :
## Architecture : standalone (1 pod) ou replication (primary + secondaries)
architecture: standalone
auth:
rootPassword: "monSuperMotDePasse" # Obligatoire
database: "app_db" # Base creee au boot
username: "app_user" # User applicatif
password: "appPass123" # Son mot de passe
primary:
## Ressources CPU/RAM du pod principal
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 512Mi
cpu: 500m
## Volume persistant pour les donnees
persistence:
enabled: true # false = donnees perdues au restart !
size: 8Gi
storageClass: "" # Laisse vide pour utiliser le StorageClass defaut
## Config MariaDB supplementaire (equivalent my.cnf)
configuration: |
[mysqld]
max_allowed_packet = 64M
character-set-server = utf8mb4
## Service Kubernetes expose sur le port 3306
service:
type: ClusterIP # ClusterIP = interne seulement | LoadBalancer = acces externe
port: 3306
Deployer avec ce fichier :
helm install mon-mariadb bitnami/mariadb -f values.yaml
persistence.enabled: false uniquement en dev/test. En prod, toujours true.Connexion K8s Kubernetes
Depuis un autre pod (dans le cluster)
Le service s'appelle <release>-mariadb. Avec l'exemple ci-dessus :
mariadb -h mon-mariadb.default.svc.cluster.local -u app_user -p app_db
Format general du hostname interne :
<nom-release>-mariadb.<namespace>.svc.cluster.local
Debug — se connecter depuis son terminal (port-forward)
# 1. Lancer le tunnel vers le pod
kubectl port-forward svc/mon-mariadb 3306:3306
# 2. Dans un autre terminal, se connecter normalement
mariadb -h 127.0.0.1 -u app_user -p app_db
Lire les logs du pod
# Trouver le nom du pod
kubectl get pods -l app.kubernetes.io/name=mariadb
# Voir les logs
kubectl logs <nom-du-pod>
Recuperer le mot de passe depuis le Secret
Bitnami stocke les mots de passe dans un Secret Kubernetes :
kubectl get secret mon-mariadb -o jsonpath='{.data.mariadb-root-password}' | base64 -d