Noob-Friendly

Guide MariaDB

Linux et Kubernetes — tout ce qu'il faut savoir pour commencer.

9 Sections
2 Plateformes
Patience
mariadb
root@server:~$ sudo mariadb
Welcome to the MariaDB monitor.
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ma_base           |
+--------------------+
MariaDB [(none)]> _
01

Installation

Sur Debian / Ubuntu :

bash
sudo apt update && sudo apt install mariadb-server -y

Securiser l'installation (mot de passe root, suppression des users anonymes) :

bash
sudo mysql_secure_installation
Reponds "Y" a toutes les questions si tu ne sais pas quoi choisir.
02

Connexion

En root (via sudo)

Par defaut sur Debian/Ubuntu, root se connecte via le plugin unix_socket (pas de mot de passe) :

bash
sudo mariadb

Avec un utilisateur et mot de passe

bash
mariadb -u mon_user -p
# ou avec le host distant :
mariadb -h 192.168.1.10 -u mon_user -p ma_base
OptionDescription
-hAdresse du serveur (defaut : localhost)
-PPort (defaut : 3306)
-uNom d'utilisateur
-pDemande le mot de passe
-eExecuter une commande SQL directement

Exemple : lancer une requete sans entrer dans le shell interactif :

bash
mariadb -u root -p -e "SHOW DATABASES;"
03

Service systemd

ActionCommande
Demarrersudo systemctl start mariadb
Arretersudo systemctl stop mariadb
Redemarrersudo systemctl restart mariadb
Statutsudo systemctl status mariadb
Demarrage autosudo systemctl enable mariadb
04

SQL de base

Lister les bases
SHOW DATABASES;
Selectionner
USE nom_base;
Lister les tables
SHOW TABLES;
Structure d'une table
DESCRIBE ma_table;
Creer une base
CREATE DATABASE ma_base;
Supprimer une base
DROP DATABASE ma_base;
05

Utilisateurs & Droits

Creer un user qui accepte les connexions de n'importe ou (%) :

sql
CREATE USER 'admin'@'%' IDENTIFIED BY 'mot_de_passe_fort';

Donner tous les droits sur une base :

sql
GRANT ALL PRIVILEGES ON ma_base.* TO 'admin'@'%';
FLUSH PRIVILEGES;

Voir les droits d'un user :

sql
SHOW GRANTS FOR 'admin'@'%';
N'utilise '%' qu'en dev. En prod, remplace par l'IP precise.
06

Sauvegardes

Exporter une base :

bash
mariadb-dump -u root -p ma_base > backup.sql

Importer un dump :

bash
mariadb -u root -p ma_base < backup.sql
07

Helm Bitnami

Le chart Helm officiel Bitnami est la facon la plus simple de deployer MariaDB sur Kubernetes.

Installer Helm et ajouter le repo

bash
# Ajouter le repo Bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

Deploiement minimal

bash
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

ParametreDefautDescription
auth.rootPasswordMot de passe du compte root
auth.databasemy_databaseBase creee au demarrage
auth.usernameUser cree automatiquement
auth.passwordMot de passe de ce user
primary.persistence.size8GiTaille du volume persistant
primary.resources.requests.memory256MiRAM minimale demandee
architecturestandalonestandalone ou replication
08

Manifest YAML

Exemple de fichier values.yaml complet pour le chart Bitnami 12.0 :

yaml
## 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 :

bash
helm install mon-mariadb bitnami/mariadb -f values.yaml
Mets persistence.enabled: false uniquement en dev/test. En prod, toujours true.
09

Connexion K8s

Depuis un autre pod (dans le cluster)

Le service s'appelle <release>-mariadb. Avec l'exemple ci-dessus :

bash
mariadb -h mon-mariadb.default.svc.cluster.local -u app_user -p app_db

Format general du hostname interne :

text
<nom-release>-mariadb.<namespace>.svc.cluster.local

Debug — se connecter depuis son terminal (port-forward)

bash
# 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

bash
# 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 :

bash
kubectl get secret mon-mariadb -o jsonpath='{.data.mariadb-root-password}' | base64 -d