Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
mariadb [Le 07/06/2018, 19:39] krodelabestiole apt-get -> apt, viré la doc php5, ortografs et liens internes ou wpfr + description fork |
mariadb [Le 22/06/2018, 16:34] krodelabestiole + utilisateurs, pas mal de modifs par rapport à mysql, et pas trouvé de solution unique pour les 2 donc mieux vaut réécrire toute la section pour le moment. |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
**[[wpfr>MariaDB]]** est un système de gestion de base de données relationnelles. Après le rachat de [[wpfr>MySQL]] par Sun Microsystems, puis de Sun par Oracle Corporation, son fondateur (Michael Widenius) démissionne pour lancer une version alternative, sous licence GPL et 100% compatible avec [[:MySQL]]. | **[[wpfr>MariaDB]]** est un système de gestion de base de données relationnelles. Après le rachat de [[wpfr>MySQL]] par Sun Microsystems, puis de Sun par Oracle Corporation, son fondateur (Michael Widenius) démissionne pour lancer une version alternative, sous licence GPL et 100% compatible avec [[:MySQL]]. | ||
MariaDB se base sur le code source de MySQL 5.1. | MariaDB se base sur le code source de MySQL 5.1. | ||
- | |||
- | --- //Source: [[http://fr.wikipedia.org/wiki/MariaDB|Wikipédia]]// | ||
Il s'agit donc d'un fork plus communautaire et ouvert, et 100% compatible MySQL. Il s'avère aussi plus performant selon certaines études. Il est utilisé comme serveur MySQL par défaut sur [[wpfr>Debian]]. Sur Ubuntu cependant, c'est toujours [[:MySQL]] qui est proposé par défaut. | Il s'agit donc d'un fork plus communautaire et ouvert, et 100% compatible MySQL. Il s'avère aussi plus performant selon certaines études. Il est utilisé comme serveur MySQL par défaut sur [[wpfr>Debian]]. Sur Ubuntu cependant, c'est toujours [[:MySQL]] qui est proposé par défaut. | ||
Ligne 17: | Ligne 15: | ||
Pour installer le serveur MariaDB : [[apt>mariadb-server]] ou | Pour installer le serveur MariaDB : [[apt>mariadb-server]] ou | ||
- | <code bash> | + | |
- | sudo apt install mariadb-server | + | <code>sudo apt install mariadb-server</code> |
+ | |||
+ | ==== PHP ==== | ||
+ | |||
+ | Pour que [[:PHP]] dialogue avec le serveur MariaDB, il ne faut pas oublier d'installer le [[:php#association_avec_un_serveur_de_base_de_donnees|module correspondant]], qui reste [[apt>php-mysql]]. | ||
+ | |||
+ | ===== Différences entre MariaDB et MySQL ===== | ||
+ | |||
+ | <note important>L'ensemble du comportement du serveur MariaDB reste très similaire à celui de MySQL. La commande ''mysql'' reste valable, ainsi que les commandes ''systemctl ... myslq''. | ||
+ | |||
+ | Pour l'essentiel vous pouvez donc suivre la [[:mysql|documentation de MySQL]]. On trouve cependant quelques différences auxquelles il faudra éventuellement faire attention.</note> | ||
+ | |||
+ | ==== auth_socket s'appelle unix_socket sous MariaDB ==== | ||
+ | |||
+ | <code mysql>MariaDB [(none)]> SELECT user, host, plugin, password FROM mysql.user; | ||
+ | +------+-----------+-------------+----------+ | ||
+ | | user | host | plugin | password | | ||
+ | +------+-----------+-------------+----------+ | ||
+ | | root | localhost | unix_socket | | | ||
+ | +------+-----------+-------------+----------+ | ||
</code> | </code> | ||
- | Pour installer le client MariaDB : [[apt>mariadb-client]] ou | + | |
- | <code bash> | + | Donc si vous entendez parler de l'un ou de l'autre de ces plugins, il s'agit du même comportement (qui permet d'utiliser le système d'authentification des utilisateurs Ubuntu, plutôt que des couples identifiants / mots de passe spécifique à MySQL). |
- | sudo apt install mariadb-client | + | |
+ | Quelques commandes sont à adapter dans la section //[[mysql#utilisateurs]]//. | ||
+ | |||
+ | ==== unix_socket par défaut pour root dès Xenial ==== | ||
+ | |||
+ | //[[:mysql#authentification|unix_socket]]// est utilisé par défaut pour le compte //root// dès [[:xenial|Ubuntu 16.04 Xenial]]. | ||
+ | |||
+ | Donc en ce qui concerne l'authentification, en particulier celle de l'utilisateur //root//, et l'accès à la commande ''mysql'' en "super-administrateur", suivez la documentation de MySQL concernant [[:Bionic]] plutôt que [[:Xenial]] si vous utilisez MariaDB même sur Xenial. | ||
+ | |||
+ | ==== password plutôt que authentication_string sur la table users ==== | ||
+ | |||
+ | Dans la table //users// de la base de données //mysql//, où sont stockés les utilisateurs MySQL, les mots de passes sont renseignés dans le champs //password// sur MariaDB, au lieu de //authentication_string// sur MySQL. | ||
+ | |||
+ | Cela n'a pas un gros impact, et les commandes pour gérer les utilisateurs restent globalement les mêmes, mais pour [[:mysql#lister_les_utilisateurs|lister les utilisateurs existants]] en affichant leurs méthodes d'authentification on utilisera plutôt : | ||
+ | <code mysql>SELECT user, host, plugin, password FROM mysql.user;</code> | ||
+ | |||
+ | ==== Utilisateurs ==== | ||
+ | |||
+ | La gestion des utilisateurs est pour le moment assez différente sur MariaDB et sur MySQL. La gestion des algorithmes de chiffrement n'étant pas similaire, certaines commandes de la section [[:mysql#utilisateurs]] retourneront actuellement une erreur de syntaxe sur MariaDB. Voici des variantes fonctionnelles pour MariaDB. | ||
+ | |||
+ | === Lister les utilisateurs === | ||
+ | |||
+ | Vous pouvez lister les utilisateurs ainsi que leurs [[#authentification|méthodes d'authentification]] avec la requête suivante : | ||
+ | <code mysql> | ||
+ | SELECT user, host, plugin, password FROM mysql.user; | ||
</code> | </code> | ||
- | ===== PHP ===== | + | === Créer un utilisateur === |
- | Pour que [[:PHP]] dialogue avec le serveur MariaDB, il ne faut pas oublier d'installer le [[:php#association_avec_un_serveur_de_base_de_donnees|module correspondant]] : [[apt>php-mysql]]. | + | Pour créer un utilisateur MySQL identifié au moyen d'un mot de passe : |
+ | <code mysql> | ||
+ | CREATE USER 'nom_utilisateur_choisi'@'localhost' IDENTIFIED BY 'mot_de_passe_solide'; | ||
+ | </code> | ||
- | ===== Définir/Redéfinir le mot de passe root et les différentes sécurités ===== | + | Pour créer un accès MySQL à un utilisateur Ubuntu : |
+ | <code mysql> | ||
+ | CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED WITH unix_socket; | ||
+ | </code> | ||
- | Lors de la première installation vous devrez définir le mot de passe root : | + | === Modifier l'accès d'un utilisateur === |
- | <code bash>sudo mysql_secure_installation</code> | + | |
+ | Pour modifier l'accès d'un utilisateur MySQL existant, et l'identifier par mot de passe : | ||
+ | <code mysql> | ||
+ | SET PASSWORD FOR 'nom_utilisateur'@'localhost' = PASSWORD('mot_de_passe_solide'); | ||
+ | </code> | ||
+ | Les requêtes suivantes sont nécessaires si on change la [[:mysql#authentification|méthode d'authentification]] : | ||
+ | <code mysql> | ||
+ | UPDATE mysql.user SET plugin = '' WHERE user = 'nom_utilisateur' AND host = 'localhost'; | ||
+ | FLUSH PRIVILEGES; | ||
+ | </code> | ||
+ | |||
+ | Pour lier un compte MySQL existant à un utilisateur Ubuntu (il faut que les noms d'utilisateur soient les mêmes) : | ||
+ | <code mysql> | ||
+ | UPDATE mysql.user SET plugin = 'unix_socket', password = '' WHERE user = 'nom_utilisateur' AND host = 'localhost'; | ||
+ | FLUSH PRIVILEGES; | ||
+ | </code> | ||
- | Permet aussi de limiter l'accès root uniquement en local… si vous rencontrez l'erreur \\ | + | === Supprimer un utilisateur === |
- | //ERROR 1698 (28000): Access denied for user 'root'@'localhost'// \\ | + | |
- | pensez bien à être en sudo | + | |
- | <code bash>sudo mysql -u root</code> | + | |
- | Pour [[:phpMyAdmin]], il faut utiliser le compte éponyme… //phpmyadmin// avec le mot de passe définit lors de l'installation (de phpmyadmin). | + | |
- | Si vous avez oublié votre mot de passe root :\\ | + | Pour supprimer un utilisateur : |
- | //ERROR 1045 (28000): Access denied for user 'root'@'localhost'// \\ | + | <code mysql> |
- | les solutions classiques à [[:MySQL]] ne résolvent pas le problème. Il faut relancer | + | DROP USER 'nom_utilisateur'@'localhost'; |
- | <code bash>sudo mysql_secure_installation | + | |
- | … | + | |
- | Change the root password? [Y/n] | + | |
- | New password: | + | |
</code> | </code> | ||
- | Si vous souhaitez accéder à votre serveur sur un réseau il vous faudra répondre à la question qui vous proposera de desactiver les connexions distantes. | ||
- | Si vous rencontrez des problèmes de connexion sur un serveur de développement, en particulier avec phpMyAdmin, consultez [[https://www.citizenz.info/mariadb-mysql-connexion-root-avec-phpmyadmin-sous-ubuntu-16-04|ce tutoriel]] afin de rétablir le fonctionnement original de type MySQL. | ||
- | Après cela le fonctionnement est semblable à [[:Mysql]]. | + | ==== UTF-8 par défaut partout ==== |
- | =====Problèmes connus===== | + | MariaDB opte pour l'[[wpfr>UTF-8]] par défaut pour l'ensemble des opérations (y compris la création de base de données). Il est donc inutile de prendre [[:mysql#configuration_en_utf-8|cette section]] en compte, et le comportement général du serveur de base de données s'en trouve mieux harmonisé. |
- | ====Connexion impossible==== | + | |
- | Si vous n'arrivez à vous connecter à MariaDB, et rencontrez l'erreur suivante: | + | |
- | <code>ERROR 1698 (28000): Access denied for user 'root'@'localhost'</code> | + | |
- | Il vous faudra modifier les droits de l'utilisateur root. Entrez dans un [[:terminal]] les commandes suivantes: | ||
- | <code bash>sudo mysql -u root | ||
- | use mysql; | ||
- | update user set plugin='' where User='root'; | ||
- | flush privileges; | ||
- | exit;</code> | ||
===== Liens ===== | ===== Liens ===== | ||
Ligne 74: | Ligne 117: | ||
---- | ---- | ||
- | //Contributeurs : [[:utilisateurs:time132|time132]], [[:utilisateurs/bcag2]]// | + | //Contributeurs : [[:utilisateurs:time132|time132]], [[:utilisateurs/bcag2]], [[:utilisateurs:krodelabestiole]]// |