Étiquette : MariaDB

  • Mettre en place une réplication entre plusieurs bases de données MariaDB

    1 – Préambule

    Nous allons mettre en place une réplication entre deux bases de données mariadb, ce qui signifie que ce qui se passe sur une base sera automatiquement renvoyé sur l’autre base

    Attention : il faut prévoir un maître et un ou des esclaves

    Le maître sera celui qui envoie les données, le ou les esclaves seront ceux qui recevront les données

    Un cas précis serait de mettre une base en écriture et une ou plusieurs bases en lecture

    Cela permettrai de rediriger le trafic entre les utilisateurs qui vont écrire dans la base (faire des commandes, etc…) et les utilisateurs qui vont lire la base (voir leurs infos, voir leurs commandes, etc…)

    Cela permet, à terme, une scalabilité horizontale d’une application

    Dans notre exemple nous allons avoir le « Master » qui aura l’ip 192.168.1.169 et un seul « Slave » qui aura l’ip 192.168.1.91

    Notre base de données sera nommée test et aura une seule table nommée test

    2 – Préparation du master

    Toutes les commandes seront à faire sur le serveur « Maître »

    2.1 – Modifier la configuration de MariaDB

    Éditer le fichier /etc/mysql/mariadb.conf.d/50-server.cnf

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    Repérer la ligne bind-address, et mettre à la place

    bind-address = 0.0.0.0
    server-id = 1
    log_bin = mariadb-bin
    binlog_format = ROW

    Enregistrer le fichier

    Redémarrer MariaDB

    sudo systemctl restart mariadb

    2.2 – Création de l’utilisateur qui va servir pour la réplication

    Se connecter à mariaBD

    sudo mysql -u root

    Créer l’utilisateur

    CREATE USER 'nomutilisateurreplication'@'192.168.1.%' IDENTIFIED BY 'motdepasseutilisateur';

    Changer le nomutilisateurreplication par le nom désiré et le motdepasseutilisateur par le mot de passe désiré

    Donner les accès à l’utilisateur pour qu’il puisse répliquer

    GRANT REPLICATION SLAVE ON *.* TO 'nomutilisateurreplication'@'192.168.1.%';
    FLUSH PRIVILEGES;

    2.3 – Verrouillage des tables et récupération des infos Binlog

    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;

    Noter les valeurs dans un coin

    2.4 – Faire une sauvegarde de la base master pour pouvoir la réinjecter dans le slave

    mysqldump -u root -p --all-databases --master-data=2 > dump.sql

    Récupérer le fichier dump.sql sur le poste – voir tuto SCP si nécessaire

    Déverrouiller le master

    UNLOCK TABLES;

    3 – Préparation du slave

    Toutes les commandes seront à faire sur le serveur « Esclave »

    3.1 – Éditer le fichier /etc/mysql/mariadb.conf.d/50-server.cnf

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    Après bind-adress rajouter

    server-id = 2
    relay_log = relay-bin

    Enregistrer le fichier

    Redémarrer MariaDB

    sudo systemctl restart mariadb

    3.2 – Importer le fichier dump crée à l’étape 2.4

    Voir le tuto sur SCP si nécessaire pour mettre le fichier sur le serveur esclave

    mysql -u root -p < dump.sql

    3.3 – Configurer la réplication

    Se connecter sur mariaDB

    mysql -u root -p

    Passer la commande suivante en modifiant les valeurs que l’on a mises tout au long de ce tuto

    CHANGE MASTER TO
      MASTER_HOST='ipdumaster',
      MASTER_USER='nomutilisateurreplication',
      MASTER_PASSWORD='motdepasseutilisateur',
      MASTER_LOG_FILE='nomfichieretape2.3',
      MASTER_LOG_POS=positionetape2.3;

    Démarrer l’esclave

    START SLAVE;

    3.4 – Vérification

    SHOW SLAVE STATUS\G

    Vérifier surtout

    • Slave_IO_Running : Yes
    • Slave_SQL_Running : Yes
    • Seconds_Behind_Master : 0 (ou proche)

    4 – Tester une insertion dans la base pour voir si ça réplique bien

    Et sur le slave

    5 – Bonus

    Pour rajouter d’autres slave, on reprends au 2.3 pour retrouver le fichier et la position

    Et dans l’étape 3.1 on mets un server-id à 3, ou 4, ou 5, etc…

  • Installation de phpMyAdmin sur Ubuntu

    1 – Les prérequis

    Avant d’installer phpMyAdmin il y a plusieurs prérequis

    • Avoir installé une base de données sql (par exemple mariadb)

    2 – Mise à jour des sources

    sudo apt update

    3 – Installation phpMyAdmin et des modules php nécessaires

    sudo apt install phpmyadmin php-zip php-gd php-json php-curl libapache2-mod-php

    y

    • Choisir apache2 en appuyant sur espace pour mettre une croix dans la case apache 2, puis tab pour aller sur ok, puis entrée
    • Bien vérifier que la croix est bien mise avant de faire entrée sinon l’installation ne choisira pas apache2 et il faudra tout recommencer
    • Yes pour lancer la configuration de phpMyAdmin
    • Mettre un mot de passe pour phpMyAdmin et le confirmer
    • phpMyAdmin est installé

    4 – Paramétrage

    phpMyAdmin fournis, par défaut un paramétrage fonctionnel, donc on va activer ce paramétrage par défaut

    sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
    sudo a2enconf phpmyadmin.conf
    sudo systemctl reload apache2.service

    5 – Test

    On se connecte sur http://ipduserveur/phpmyadmin

    6 – Bonus

    Si on a cette erreur à la connexion à phpMyAdmin

    Cela signifie que root n’a pas le droit de se connecter à phpMyAdmin.

    On va lister les utilisateurs de la base

    sudo mysql -u root
    SELECT user, host, plugin FROM mysql.user;

    On voit bien que l’utilisateur est phpmyadmin et non root qui peux se connecter à phpMyAdmin

    On vérifie les accès de phpmyadmin

    SHOW GRANTS FOR 'phpmyadmin'@'localhost';

    Les seuls accès qu’il a c’est sur sa base, on va donc lui donner tous les accès possibles

    GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

    On resteste en remettant la commande Show Grants

    notre utilisateur a bien tous les privilèges. On peux tester la connexion

    Tout est fonctionnel, on peux utiliser phpMyAdmin avec mariadb

  • Installation MariaBD sur un serveur Ubuntu

    1 – Mettre à jour les sources

    sudo apt update

    2 – Installation de mariadb

    sudo apt install mariadb-server

    y

    3 – Activation du démarrage automatique de MariaDB

    sudo systemctl enable mariadb
    sudo systemctl start mariadb

    On peux vérifier le bon démarrage

    sudo systemctl status mariadb

    4 – Exécution du script de sécurisation pour sécuriser au minimum l’installation de mariadb

    sudo mariadb-secure-installation
    • Le mot de passe que l’on veux pour le root de mariadb
    • N pour non
    • On peux mettre Y si on change changer le mot de passe du root, sinon N vu que l’on a déjà mis un mot de passe root à l’étape 1
    • Y pour supprimer les utilisateurs anonymes crées par défaut à l’installation
    • Y si on va se servir du root uniquement en local (plus que conseillé)
    • Y pour supprimer la base de test créée pendant l’installation de mariadb
    • Y pour recharger les privilèges mis au propre

    5 – Test de connexion

    On va tester de se connecter à mariadb pour voir si tout est correct

    sudo mariadb -u root -p
    show databases;

    On peux quitter mariadb avec

    exit;

    6 – Relance du service mariadb

    sudo systemctl restart mariadb

    7 – La suite

    On peux installer phpMyAdmin si on le souhaite