Installation et configuration de MariaDB

Installation et configuration de  MariaDB

Conditions d’installation "Conteneur Lxc"

L’installation est réalisée selon les critères suivants:

Le conteneur est un processus indépendant de son hôte, il utilise son propre système de manière isolé. Le fait qu'il soit "Unprivileged" veut dire que "normalement" il n'accède a aucune ressource de son hôte, L'utilisateur par défaut est "root" , il est possible de modifier ce fait , la manipulation n'est pas si aisée. "Nesting" autorise d'installer un autre conteneur a l’intérieur du conteneur. Pour finir, il est peut gourmand en ressource et du fait qu'il soit portable, il peut être déployer très rapidement...

  • Proxmox PVE 8.3
  • Conteneur "Unprivileged"
  • Nesting: Oui
  • Utilisateur : root
  • Debian12

MariaDB est un système de gestion de base de données au mème titre que PostgreSQL. Cette plateforme est issue de la base de données MySQL, elle est éditée sous licence GPL [1]. MySQL a été racheté par Oracle, son créateur en a fait un "fork" et a permis ainsi la distribution libre de Maria DB.


  1. GPL Voir ici pour les explications ↩︎

Installation et paramétrage de MariaDB version 10

C'est extrêmement simple d'installer MariaDB.

# apt update && apt upgrade -y
# apt install mariadb-server -y

Ça s'est fait !
Bon maintenant, on va sécuriser l’ensemble :

# mariadb-secure-installation

  • Entrez le mot de passe de root, validez si aucun mot de passe.

Enter current password for root (enter for none): #Validez!

  • On demande si vous voulez utiliser le compte root du système ou si vous voulez en créer un propre à MariaDb [1]. On utilisera celui du système.

Switch to unix_socket authentication [Y/n] Y #Oui

  • On répond non, car vous utilisez votre mot de passe root de votre système.

Change the root password? [Y/n] n #Non

  • Désactiver les utilisateurs anonymes.

Remove anonymous users? [Y/n] Y #Oui

  • Desactiver l'accès root à distance.

Disallow root login remotely? [Y/n] Y #Oui


  1. Vous pouvez vous référer a ce site (en anglais) pour plus d'explication. ↩︎

Modification de l'accès a MariaDB

Pour qu'on puisse accéder à MariaDB à distance, il faut modifier l'adresse d’écoute qu'elle utilise par défaut : 127.0.0.1 et aussi ouvrir le port d'écoute qui est le 3306 par défaut.

Nous avons besoin de connaitre l'adresse IP locale de notre instance :

# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0@if325: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether bc:24:11:c1:be:af brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.0.7/24 brd 10.0.0.255 scope global dynamic eth0

Nous avons notre IP, en l'occurrence pour l'exemple "10.0.0.7"

  • Pour l'adresse, on ouvre le fichier suivant :

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

Modifiez la ligne "bind-address =":

mariadbip.png

  • Pour le port, ce sera celui-ci :

#sudo nano /etc/mysql/mariadb.cnf

Décommentez la ligne (en dessous de "client-server") pour ouvrir le port, vous pouvez également le changer à votre convenance :

portmaria.png

Redémarrez le service :

# systemctl restart mysql

Attention si vous avez un pare-feu local, pensez a ouvrir le port 3306.

Création d'une base de données et d'un utilisateur

On va se connecter à MariaDb avec le compte root de votre Debian :

# mariadb -u root -p

On va créer une base de données, pour Le cms Ghost par exemple :

Attention, la Casse est importante et la ponctuation aussi !

CREATE DATABASE ghost;
Query OK, 1 row affected (0.000 sec ça veut dire que c'est bon !

On va créer un utilisateur pour cette base de données :

Mon utilisateur pour l'exemple sera "userghost" et le mot de passe "ghost"

CREATE USER 'userghost'@'%' IDENTIFIED BY 'ghost';
Query OK, 0 rows affected (0.001 sec)

On va affecter notre utilisateur à la base de données "ghost" en lui attribuant tous les droits :

GRANT ALL ON `ghost`.* TO 'userghost'@'%';
Query OK, 0 rows affected (0.001 sec

On va en quelque sorte valider ce qu'on vient de faire en executant un "FLUSH", c'est une requête de validation des droits, dans notre cas notre utilsateur
sur la base de données "ghost" :

FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

On quitte :

MariaDB [(none)]> quit;
Bye
...En plus elle est polie ! 😃

Comme vous pouvez le voir, on a inscrit "%" à l'utilisateur afin de permettre la connexion de n'importe quel IP de votre réseau. Par sécurité, on pourrait la restreindre a l’IP concernée.

  • On peut vérifier si l'accès fonctionne bien :

# mysql -u userghost -p -h 10.0.0.7 -P 3306

L'essentiel des commandes :

  • Si on veut visualier la liste des bases de données :
    # SHOW DATABASES;
  • Si on veut lister les utilsateurs :
    # SELECT User FROM mysql.user;
  • Si on veut voir les privilèges d'un utilisateur, dans ce cas précis notre utilisateur a toutes les permissions sur la base de donnée "ghost" :
    #SHOW GRANTS FOR 'userghost'@'10.0.0.7';
  • Si on veut retirer tous les privilèges à cet utilisateur :
    # REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'userghost'@'10.0.0.7';
  • Si on veut supprimer la base de données:( notre exemple) :
    # DROP DATABASE ghost;
  • Si on veut supprimer l’utilisateur (notre exemple) :
    # DROP USER userghost; (on peut juste taper le nom)

C'est terminé !

MariaDB Foundation - MariaDB.org
… Continue reading “MariaDB Foundation”