Debian 9 Stretch : installer et configurer MariaDB

MariaDB est un système de gestion de base de données édité sous licence GPL.
Il s'agit d'un fork communautaire de MySQL qui a été racheté par Oracle.

La migration de MySQL vers MariaDB est très simple car MariaDB est basé sur le code source de MySQL (même si depuis, les 2 systèmes évoluent chacun de leur côté).
MariaDB est également souvent meilleur que MySQL, grâce à l’amélioration de l’optimiseur de requêtes et au moteur de stockage Aria.

Dans Debian 9 Stretch, MariaDB est la variante par défaut de MySQL proposée par la distribution.

 

Installation de MariaDB

Comme d'habitude, on utilise la commande apt-get pour installer les paquets de MariaDB

sudo apt-get install mariadb-server

Une fois que l'installation des composants est terminée, tapez la commande suivante pour finaliser la configuration.

sudo mysql_secure_installation

Comme demandé, tapez le mot de passe root de votre Debian.
Puis répondez Y à toutes les questions suivantes.

Vous commencerez ainsi par donner un mot de passe à l'utilisateur root de MariaDB différent de l'utilisateur root de votre Debian.
Cet utilisateur root de la base de données aura tous les droits d'accès, pour des raisons évidentes de sécurité, je vous recommande d'utiliser un mot de passe complexe !

Ensuite, les connexions anonymes seront désactivées, ainsi que les connexions root qui se font depuis un serveur autre que le votre...

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.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y
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] y
 ... 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] y
 ... 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] y
 - 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] y
 ... 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!

C'est terminé : MariaDB est installé !

 

Configuration de MariaDB

L'installation par défaut de MariaDB sous Debian 9 applique une restriction à l'utilisateur root.

Lorsque vous essayerez de vous connecter à MariaDB avec la commande mysql -u root -p vous obtiendrez une erreur Access denied for user 'root'@'localhost'

# mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Pour remédier à ce problème, connectez vous à MariaDb avec sudo

sudo mysql -u root -p

Une fois que vous aurez taper le bon mot de passe, cette fois vous serez connecté.
Tapez alors la commande USE mysql; qui vous connectera à la base de données mysql contenant la configuration du serveur.
Puis tapez la requête SELECT plugin FROM user WHERE user='root';

Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.1.23-MariaDB-9+deb9u1 Debian 9.0

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SELECT plugin FROM user WHERE user='root';
+-------------+
| plugin      |
+-------------+
| unix_socket |
+-------------+
1 row in set (0.00 sec)

C'est à cause de ce plugin unix_socket que la connexion root est refusée lorsqu'on se connecte à la base sans sudo.

Pour remédier au problème, tapez la requête UPDATE user SET plugin='' WHERE User='root'; qui supprimera ce plugin pour l'utilisateur root.
Recharger les privilèges utilisateurs avec la commande FLUSH PRIVILEGES; puis quitter MariaDb avec la commande EXIT;

MariaDB [mysql]> UPDATE user SET plugin='' WHERE User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> EXIT;
Bye

A présent, si vous essayez à nouveau de vous connecter au serveur sans sudo, avec mysql -u root -p, ca fonctionnera.

mysql -u root -p
	Enter password:
	Welcome to the MariaDB monitor.  Commands end with ; or \g.
	Your MariaDB connection id is 20
	Server version: 10.1.23-MariaDB-9+deb9u1 Debian 9.0

	Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

	Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

	MariaDB [(none)]>

 

Connexion sur votre base de données

Pour accéder/administrer notre serveur et nos base de données, nous allons utiliser Adminer.
Adminer, c'est comme phpMyAdmin mais en beaucoup plus light : il se compose d'un seul fichier prêt à être déployer sur le serveur cible.

En plus, Adminer est disponible pour MySQL, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, ElasticSearch et MongoDB.

On se déplace donc dans la racine de notre vHost puis on télécharge Adminer pour mySQL (seuelement 426 ko dans cette version 4.3.1)

cd /usr/share/nginx/html
sudo wget https://github.com/vrana/adminer/releases/download/v4.3.1/adminer-4.3.1.php

Ensuite, il suffit d'accéder au fichier PHP et vous arrivez sur une page de connexion sur serveur de base de données MariaDB.

Une fois connecté, vous arrivez sur une interface très similaire à phpMyAdmin.
Pour un seul fichier PHP de moins de 500ko, c'est quand même super impressionnant smiley.

 

Commentaires

Merci j'ai tellement galérer à trouver !!!! Perfect :)

Bonjour, c'est quoi Vhost ??? 

Un vHost est un "virtual host" ou "hôte virtuel" en français.

Cela permet de gérer plusieurs sites internet distinct (les vHost) à partir d'un même serveur web (nginx ou apache par exemple).

Merci, c'est clair et ça fonctionne

je n'avais pas encore trouver le truc pour connecter root sur mariadb !

 

Bonjour,

la suppression de "unix_socket" a pour conséquence de casser les scripts tels que automysqlbackup, ils plantent avec l'erreur "Access denied for user 'root'@'localhost' (using password: NO)" (une explication dans la 2ème réponse ici). Bien sur, son execution par cron plante également. En remettant la valeur avec UPDATE user SET plugin='unix_socket' WHERE User='root'; ça fonctionne sans soucis.

Ajouter un commentaire

You must have Javascript enabled to use this form.