dim, 09/22/2019 - 16:22 — geek17
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 10 Buster (comme dans Debian 9 Stretch), MariaDB 10.3 est la variante par défaut de MySQL proposée par la distribution.
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 expliqué, tapez Enter directement à la première question car le mot de passe de l'utilisateur root de MariaDB (pas de votre Debian) est vide par défaut après l'installation.
Puis répondez Y à la question suivante pour spécifier le mot de passe de l'utilisateur root de MariaDB qui, une fois de plus, est 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 !
Et vous pouvez répondre Y à toutes les questions suivantes: 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.
Set 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é !
L'installation par défaut de MariaDB sous Debian 10 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 58
Server version: 10.3.15-MariaDB-1 Debian 10
Copyright (c) 2000, 2018, 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 59
Server version: 10.3.15-MariaDB-1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
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 (seulement 472 ko dans cette version 4.7.2)
cd /usr/share/nginx/html
sudo wget https://github.com/vrana/adminer/releases/download/v4.7.3/adminer-4.7.3.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.