MySQL ou MariaDB est un système de gestion de base de données open source.
Il vous permet de créer une base de données pour mettre en place un site WEB WordPress, Joomla ou Drupal et bien d’autres usages.
Dans Debian, MySQL existe sous la forme de MariaDB en version 12.
Ce dernier étant entièrement sous licence GPL.
Il n’y a pas énormément de différences de fonctionnement entre les deux.
Dans ce tutoriel, je vous guide pour installer MariaDB sur Debian 12.
Table des matières
Installer MySQL (MariaDB) sur Debian 12
Installer le paquet Mariadb-server
L’installation des paquets MySQL sur Debian est extrêmement simple puisque Mariadb est disponible dans les dépôts.
On utilise donc APT pour installer.
On met donc à jour les dépôts avec la commande update puis on installe le paquet mariadb-server :
apt update
apt install mariadb-server-10.3
Puis laissez l’installation s’effectuer.
Script de sécurité
Les paquets configure MySQL mais on peut utiliser un script de sécurité pour changer le mot de passe root puis configurer certains aspects de sécurité de MySQL.
Pour cela, saisissez la commande suivante :
mysql_secure_installation
Puis laissez vous guider pour répondre aux questions suivantes avec la touche Y ou N.
- Set root password – Définir le mot de passe root
- Remove anonymous users – Supprimer les utilisateurs anonymes
- Remove test database and access to it – Supprimer la base de données de test et y accéder
- Reload privilege tables now – Recharger les tables de privilèges maintenant
Changer le mot de passe root avec mysqladmin
Sinon on peut aussi changer le mot de passe root MySQL directement avec la commande mysqladmin.
Voici la syntaxe à utiliser :
mysqladmin -u root -p password 'lemotdepasse'
Par exemple pour mettre le mot de passe root Mysql “SuperMotdePasseDeOuf”.
Configuration de MySQL
Créer une base de données et utilisateur sur MySQL
On se connecte en root à MySQL avec la commande suivante :
mysql -u root -p
Puis on utilise la commande create database pour créer une base de données.
Par exemple pour créer la base de données supermalekal :
create database supermalekal;
Ensuite vous pouvez créer les utilisateurs d’accès à votre base de données.
CREATE USER 'utilisateur'@'ip' IDENTIFIED BY 'motdepasse';
GRANT ALL PRIVILEGES ON nombasededonnées.* TO 'utilisateur'@'ip' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Par exemple pour donner accès à la base de données supermalekal à l’utilisateur malekal sur localhost avec le mot de passe 9ez5Ds4sd5ez :
CREATE USER 'malekal'@'localhost' IDENTIFIED BY '9ez5Ds4sd5ez ';
GRANT ALL PRIVILEGES ON supermalekal.* TO 'malekal'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Démarrer, Arrêter, redémarrer MySQL
MySQL fonctionne en service (daemon), on peut donc arrêter, redémarrer MySQL avec systemctl.
Pour rappel, il existe un article sur le fonctionnement des services Linux :
Ainsi pour redémarrer MySQL, on peut utiliser une de ces deux commandes :
systemctl restart mysql.service
ou
/etc/init.d/mysql restart
Pour arrêter MySQL :
systemctl stop mysql.service
ou
/etc/init.d/mysql stop
Vérifier le fonctionnement de MySQL :
systemctl status mysql.service
Lorsque le serveur de base de données est en cours de fonctionnement, on obtient en vert : Active: active (running).
Le PID du processus est alors indiqué.
mariadb.service - MariaDB 10.3.27 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-03-31 08:53:00 UTC; 14min ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 2784 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 31 (limit: 4915)
Memory: 81.2M
CGroup: /system.slice/mariadb.service
└─2784 /usr/sbin/mysqld
Pour le démarrer :
systemctl start mysql
Déplacer le répertoire /var/lib/mysql
Par défaut, les bases de données sont stockés dans le répertoire /var/lib/mysql.
Selon le partitionnement de disque, il peut être nécessaire de déplacer le répertoire /var/lib/mysql.
Voici comment déplacer le dossier MySQL par exemple vers /home/mysql.
mkdir /home/mysql
chown mysql.mysql /home/mysql
Puis on arrête MySQL :
systemctl stop mysql
Copiez les bases de données vers le nouvel emplacement :
cp -R -p /var/lib/mysql/* /home/mysql
Ensuite on modifie la configuration MySQL :
/etc/mysql/mariadb.conf.d/50-server.cnf
Puis modifiez le paramètre datadir :
datadir = /home/mysql
Modifiez la configuration du service MySQL, éditez le fichier /etc/systemd/system/multi-user.target.wants/mariadb.service puis passez ProtectHome sur false :
vim /etc/systemd/system/multi-user.target.wants/mariadb.service
ProtectHome=false
Si apparmor est installé, il faut autoriser.
Editez le fichier /etc/apparmor.d/usr.sbin.mysqld pour modifier toutes les références /var/lib/mysql vers /home/mysql
/etc/apparmor.d/usr.sbin.mysqld
Enfin on relance tous les services :
systemctl daemon-reload
/etc/init.d/apparmor reload
/etc/init.d/mysql restart
Si vous rencontrez une erreur au redémarrage de MySQL, vérifiez les journaux /var/log/mysql/error.log ou /var/log/daemon.log.
Le cas typique étant une erreur Can’t change dir to lorsque les permissions de fichiers ne sont pas corrects ou ProtectHome n’a pas été modifié.
Mar 31 09:29:46 nsXXX mysqld[4795]: #007/usr/sbin/mysqld: Can't change dir to '/home/mysql/' (Errcode: 13 "Permission denied")
Optimiser MySQL
Pour les réglages d’optimisations de MySQL, reportez-vous à ce tutoriel :
Supprimer Mariadb de Debian
Vous n’avez plus besoin de Mariadb sur votre serveur Debian et souhaitez le supprimer complètement.
- Pour désinstaller et supprimer Mariadb de Debian, on utilise aussi APT :
apt purge mariadb-server-10.3
- Appuyez sur Y pour valider la suppression des paquets
- Puis indiquez si vous désirez supprimer l’intégralité des bases de données.
- La désinstallation et suppression de MySQL se termine
Liens
- Comment optimiser MySQL
- Installer MySQL NDB Cluster sur Debian 10
- Galera : Installer un Cluster MariaDB/MySQL sur Debian 10
- Comment sauvegarder et restaurer des bases de données MySQL avec Mysqldump
- Installer Linux Debian 12 : le guide complet
- MariaDB : créer une base de données
- Comment installer phpMyAdmin sur Ubuntu ou Debian
- Réinitialiser le mot de passe root perdu ou oublié de MySQL ou MariaDB