Debian stretch

How To Install MariaDB on Debian 9

Étape 1 - Installation de MariaDB

Sur Debian 9, MariaDB version 10.1 est incluse par défaut dans les dépôts de paquets APT. Il est marqué comme la variante par défaut de MySQL par l’équipe d’empaquetage de Debian MySQL/MariaDB.

Pour l’installer, mettez à jour l’index des paquets sur votre serveur avec apt :

sudo apt update

Ensuite, installez le paquet :

sudo apt install mariadb-server

Cela installera MariaDB, mais ne vous demandera pas de définir un mot de passe ou d’effectuer d’autres changements de configuration. Parce que votre installation de MariaDB n’est pas sécurisée, nous y reviendrons plus tard.

Étape 2 - Configuration de MariaDB

Pour les nouvelles installations, vous devrez exécuter le script de sécurité inclus. Cela change certaines des options par défaut moins sûres pour des choses comme les connexions root distantes et les utilisateurs d’échantillons.

Exécutez le script de sécurité :

sudo mysql_secure_installation

Ceci vous guidera à travers une série d’invites où vous pourrez apporter des modifications aux options de sécurité de votre installation de MariaDB. La première invite vous demandera d’entrer le mot de passe root actuel de la base de données. Comme nous n’en avons pas encore configuré un, appuyez sur ENTER pour indiquer “none”.

L’invite suivante vous demande si vous souhaitez configurer un mot de passe root pour la base de données. Tapez n, puis appuyez sur ENTER. Dans Debian, le compte racine de MariaDB est étroitement lié à la maintenance automatisée du système, nous ne devons donc pas modifier les méthodes d’authentification configurées pour ce compte. Cela permettrait à une mise à jour de paquet de briser le système de base de données en supprimant l’accès au compte administratif. Plus tard, nous expliquerons comment configurer un compte administratif supplémentaire pour l’accès par mot de passe si l’authentification socket n’est pas appropriée à votre cas d’utilisation.

De là, vous pouvez appuyer sur Y, puis sur ENTER pour accepter les valeurs par défaut pour toutes les questions suivantes. Cela supprimera certains utilisateurs anonymes et la base de données de test, désactivera les connexions root distantes et chargera ces nouvelles règles afin que MariaDB respecte immédiatement les changements que vous avez effectués.

Étape 3 - Réglage (facultatif) de l’authentification et des privilèges de l’utilisateur

Dans les systèmes Debian exécutant MariaDB 10.1, l’utilisateur MariaDB racine est configuré pour s’authentifier en utilisant le plugin unix_socket par défaut plutôt qu’avec un mot de passe. Cela permet une plus grande sécurité et une plus grande facilité d’utilisation dans de nombreux cas, mais cela peut aussi compliquer les choses lorsque vous avez besoin d’autoriser un programme externe (par exemple, phpMyAdmin) des droits administratifs.

Comme le serveur utilise le compte racine pour des tâches telles que la rotation du journal et le démarrage et l’arrêt du serveur, il est préférable de ne pas modifier les détails d'authentification du compte racine. Modifier les informations d’identification du compte dans le fichier /etc/mysql/debian.cnf peut fonctionner initialement, mais les mises à jour du paquet peuvent potentiellement écraser ces modifications. Au lieu de modifier le compte racine, les responsables du paquet recommandent de créer un compte administratif séparé si vous avez besoin de configurer un accès par mot de passe.

Pour ce faire, nous allons créer un nouveau compte appelé admin avec les mêmes capacités que le compte root, mais configuré pour l’authentification par mot de passe. Pour ce faire, ouvrez l’invite MariaDB depuis votre terminal :

sudo mysql

Maintenant, nous pouvons créer un nouvel utilisateur avec des privilèges root et un accès par mot de passe. Modifiez le nom d’utilisateur et le mot de passe en fonction de vos préférences :

GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'zgSgWv1S7oON' WITH GRANT OPTION;

Purgez les privilèges pour vous assurer qu’ils sont sauvegardés et disponibles dans la session en cours :

FLUSH PRIVILEGES;

Ensuite, quittez le shell MariaDB :

exit

Enfin, testons l’installation de MariaDB.

Étape 4 - Tester MariaDB

Une fois installé à partir des référentiels par défaut, MariaDB devrait démarrer automatiquement. Pour le tester, vérifiez son état.

sudo systemctl status mariadb

Vous verrez un résultat similaire à ce qui suit :

● mariadb.service - MariaDB 10.1.37 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-01-27 18:06:07 CET; 4min 5s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 11527 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited
  Process: 11524 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 11419 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/ga
  Process: 11414 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited,
  Process: 11412 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, 
 Main PID: 11496 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           └─11496 /usr/sbin/mysqld

janv. 27 18:06:05 XS35V2 systemd[1]: Starting MariaDB 10.1.37 database server...
janv. 27 18:06:06 XS35V2 mysqld[11496]: 2019-01-27 18:06:06 3070662656 [Note] /usr/sbin/mysqld (mysqld 1
janv. 27 18:06:07 XS35V2 systemd[1]: Started MariaDB 10.1.37 database server.

Si MariaDB ne fonctionne pas, vous pouvez le démarrer avec sudo systemctl start mariadb.

Pour une vérification supplémentaire, vous pouvez essayer de vous connecter à la base de données en utilisant l’outil mysqladmin, qui est un client qui vous permet d’exécuter des commandes administratives. Par exemple, cette commande dit de se connecter à MariaDB en tant que root et de retourner la version en utilisant le socket Unix :

sudo mysqladmin version

Vous devriez voir une sortie similaire à celle-ci :

mysqladmin  Ver 9.1 Distrib 10.1.37-MariaDB, for debian-linux-gnu on i686
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version		10.1.37-MariaDB-0+deb9u1
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			5 min 16 sec

Threads: 1  Questions: 16  Slow queries: 0  Opens: 17  Flush tables: 1  Open tables: 11  Queries per second avg: 0.050

Si vous avez configuré un utilisateur administratif séparé avec authentification par mot de passe, vous pouvez effectuer la même opération en tapant :

mysqladmin -u admin -p version

Cela signifie que MariaDB est opérationnel et que votre utilisateur “admin” peut s’authentifier avec succès.

Archlinux

Installer mariadb

sudo pacman -S mariadb

puis exécuter la commande suivante avant de lancer mariadb.service :

mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

Remarque : Pour des raisons de sécurité, le fichier de service systemd contient ProtectHome=true, qui empêche MariaDB d’accéder aux fichiers dans les hiérarchies /home, /root et /run/user. Le datadir doit se trouver dans un endroit accessible et appartenir à l’utilisateur et au groupe mysql. Vous pouvez modifier ce comportement en créant un fichier de service supplémentaire comme décrit ici : https://mariadb.com/kb/en/mariadb/systemd/

Le service mariadb.service peut maintenant être démarré et/ou activé avec systemd.

sudo systemctl start mariadb
sudo systemctl status --no-pager --full mariadb --full

Astuce : Si vous utilisez quelque chose de différent de /var/lib/mysql pour votre répertoire de données, vous devez définir datadir=<YOUR_DATADIR> sous la section[mysqld] de votre fichier /etc/mysql/my.cnf.

La commande suivante vous guidera interactivement à travers un certain nombre de mesures de sécurité recommandées au niveau de la base de données :

sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] 
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Créer un utilisateur avec tous les privilèges , le mot de passe root est stocké dans /etc/yannick/mariadbroot

sudo -s
mysql -uroot -p$(cat /etc/yannick/mariadbroot ) -e  "GRANT ALL PRIVILEGES ON *.* TO admin@localhost 
IDENTIFIED BY '$(cat /etc/yannick/mariadb )' WITH GRANT OPTION;
FLUSH PRIVILEGES;"
#
exit

Test

mysql -uadmin -p$(cat /etc/yannick/mariadb )