Recherche de site Web

Comment installer, sécuriser et régler les performances du serveur de base de données MariaDB


Un serveur de base de données est un composant essentiel de l’infrastructure réseau nécessaire aux applications d’aujourd’hui. Sans la possibilité de stocker, récupérer, mettre à jour et supprimer des données (si nécessaire), l’utilité et la portée des applications Web et de bureau deviennent très limitées.

De plus, savoir installer, gérer et configurer un serveur de base de données (afin qu’il fonctionne comme prévu) est une compétence essentielle que tout administrateur système doit posséder.

Dans cet article, nous allons brièvement voir comment installer et sécuriser un serveur de base de données MariaDB, puis nous expliquerons comment le configurer.

Installation et sécurisation d’un serveur MariaDB

Dans CentOS 7.x, MariaDB a remplacé MySQL, que l’on peut toujours trouver dans Ubuntu (avec MariaDB). Il en va de même pour openSUSE.

Par souci de brièveté, nous n’utiliserons MariaDB que dans ce tutoriel, mais veuillez noter qu’en plus d’avoir des noms et des philosophies de développement différents, les deux systèmes de gestion de bases de données relationnelles (SGBDR) sont presque identiques.

Cela signifie que les commandes côté client sont les mêmes sur MySQL et MariaDB, et que les fichiers de configuration sont nommés et situés aux mêmes endroits.

Pour installer MariaDB, faites :

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
zypper update && zypper install mariadb mariadb-tools # openSUSE

Notez que, dans Ubuntu, il vous sera demandé d’entrer un mot de passe pour l’utilisateur racine du SGBDR.

Une fois les paquets ci-dessus installés, assurez-vous que le service de base de données est en cours d’exécution et qu’il a été activé pour démarrer au démarrage (dans CentOS et openSUSE, vous devrez effectuer cette opération manuellement, tandis que dans Ubuntu, le processus d’installation s’en sera déjà occupé pour vous) :

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
systemctl start mysql && systemctl enable mysql

Exécutez ensuite le script mysql_secure_installation. Ce processus vous permettra de :

  1. définir/réinitialiser le mot de passe de l’utilisateur racine du SGBDR
  2. supprimer les identifiants de connexion anonymes (permettant ainsi uniquement aux utilisateurs disposant d’un compte valide de se connecter au SGBDR)
  3. Désactiver l’accès root pour les machines autres que localhost
  4. Supprimer la base de données de test (accessible à tous)
  5. Activez les modifications associées aux points 1 à 4.

Pour une description plus détaillée de ce processus, vous pouvez vous référer à la section Post-installation dans Installer la base de données MariaDB dans RHEL/CentOS/Fedora et Debian/Ubuntu.

Configuration du serveur MariaDB

Les options de configuration par défaut sont lues à partir des fichiers suivants dans l’ordre donné : /etc/mysql/my.cnf, /etc/my.cnf et ~/.my.cnf.

Le plus souvent, seul /etc/my.cnf existe. C’est sur ce fichier que nous allons définir les paramètres à l’échelle du serveur (qui peuvent être remplacés par les mêmes paramètres dans ~/.my.cnf pour chaque utilisateur).

La première chose que nous devons noter à propos de my.cnf est que les paramètres sont organisés en catégories (ou groupes) où chaque nom de catégorie est entouré de crochets.

Les configurations du système serveur sont données dans la section [mysqld], où vous ne trouverez généralement que les deux premiers paramètres dans le tableau ci-dessous. Le reste sont d’autres options fréquemment utilisées (le cas échéant, nous changerons la valeur par défaut avec une valeur personnalisée de notre choix) :

Réglage et descriptionValeur par défaut
datadir est le répertoire dans lequel les fichiers de données sont stockés.datadir=/var/lib/mysql
socket indique le nom et l’emplacement du fichier socket utilisé pour les connexions client locales. Gardez à l’esprit qu’un fichier socket est une ressource utilisée pour transmettre des informations entre les applications.socket=/var/lib/mysql/mysql.sock

Nous allons changer cela pour indiquer au service d’écouter uniquement sur son adresse principale (192.168.0.13) :

adresse_de_liaison=192.168.0.13

bind_address=0.0.0.0

Nous allons remplacer la valeur par défaut (3306) par 20500 (mais nous devons nous assurer que rien d’autre n’utilise ce port) :
port=20500

Bien que certaines personnes diront que la sécurité par l’obscurité n’est pas une bonne pratique, changer les ports d’application par défaut pour des ports plus élevés est une méthode rudimentaire - mais efficace - pour décourager les analyses de ports.

port=3306

Nous allons remplacer la valeur par défaut par 256 Mo :

innodb_buffer_pool_size=256 millions

innodb_buffer_pool_size=134217728

À moins que vous n’ayez besoin de noms d’hôtes pour déterminer les autorisations, il est conseillé de désactiver cette variable (afin d’accélérer les connexions et les requêtes) en mettant sa valeur à 1 :

skip_name_resolve=1

skip_name_resolve=0

Vous devez choisir une taille de cache de requête qui correspond à vos besoins en fonction 1) du nombre de requêtes répétitives et 2) du nombre approximatif d’enregistrements que ces requêtes répétitives sont censées renvoyer. Nous allons définir cette valeur à 100 Mo pour le moment :

query_cache_size=100 millions

query_cache_size=0 (ce qui signifie qu’il est désactivé par défaut)
max_connections s’agit du nombre maximal de connexions client simultanées au serveur. Nous allons définir cette valeur à 30 :
max_connections=30Chaque connexion utilisera un thread et consommera donc de la mémoire. Tenez compte de ce fait lors de la définition de max_connections.
max_connections=151

Encore une fois, cela dépend du nombre de connexions que vous attendez. Nous pouvons définir en toute sécurité cette valeur à la moitié du nombre de max_connections :

thread_cache_size=15

thread_cache_size=0 (désactivé par défaut)

Dans CentOS, nous devrons indiquer à SELinux de permettre à MariaDB d’écouter sur un port non standard (20500) avant de redémarrer le service :

# yum install policycoreutils-python
semanage port -a -t mysqld_port_t -p tcp 20500

Redémarrez ensuite le service MariaDB.

Optimisation des performances de MariaDB

Pour nous aider à vérifier et à ajuster la configuration en fonction de nos besoins spécifiques, nous pouvons installer mysqltuner (un script qui fournira des suggestions pour améliorer les performances de notre serveur de base de données et augmenter sa stabilité) :

# wget https://github.com/major/MySQLTuner-perl/tarball/master
tar xzf master

Changez ensuite de répertoire dans le dossier extrait de l’archive tar (la version exacte peut différer dans votre cas) :

# cd major-MySQLTuner-perl-7dabf27

et exécutez-le (vous serez invité à entrer les informations d’identification de votre compte administratif MariaDB)

# ./mysqltuner.pl

Le rendu du script est en soi très intéressant, mais passons en bas où les variables à ajuster sont listées avec la valeur recommandée :

Le paramètre query_cache_type indique si le cache de requête est désactivé (0) ou activé (1). Dans ce cas, mysqltuner nous conseille de le désactiver.

Alors pourquoi nous conseille-t-on de le désactiver maintenant ? La raison en est que le cache de requête est surtout utile dans les scénarios de lecture élevée/écriture faible (ce qui n’est pas notre cas, puisque nous venons d’installer le serveur de base de données).

AVERTISSEMENT : Avant d’apporter des modifications à la configuration d’un serveur de production, vous êtes fortement encouragé à consulter un administrateur de base de données expert pour vous assurer qu’une recommandation donnée par mysqltuner n’aura pas d’impact négatif sur un paramètre existant.

Résumé

Dans cet article, nous avons expliqué comment configurer un serveur de base de données MariaDB après l’avoir installé et sécurisé. Les variables de configuration répertoriées dans le tableau ci-dessus ne sont que quelques paramètres que vous pouvez prendre en compte lors de la préparation du serveur pour l’utilisation ou lors de son réglage ultérieur. Référez-vous toujours à la documentation officielle de MariaDB avant d’apporter des modifications ou reportez-vous à nos conseils de réglage des performances MariaDB :

Ne manquez pas : 15 conseils utiles pour le réglage et l’optimisation des performances MariaDB

Comme toujours, n’hésitez pas à nous faire savoir si vous avez des questions ou des commentaires sur cet article. Y a-t-il d’autres paramètres de serveur que vous aimez utiliser ? N’hésitez pas à partager avec le reste de la communauté en utilisant le formulaire de commentaire ci-dessous.

Articles connexes: