Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
mysql [Le 28/10/2020, 11:55]
krodelabestiole ancienne révision (Le 16/10/2020, 17:41) restaurée
mysql [Le 10/01/2024, 06:35] (Version actuelle)
krodelabestiole ancienne révision (Le 28/01/2023, 13:17) restaurée
Ligne 1: Ligne 1:
-{{tag>Xenial Bionic ​sgbd mysql serveur réseau}}+{{tag>Focal sgbd mysql serveur réseau}}
  
 ====== MySQL ====== ====== MySQL ======
Ligne 12: Ligne 12:
  
 L'​installation de ce paquet doit se faire de préférence en utilisant [[terminal]] via la commande :​ <​code>​sudo apt install mysql-server</​code>​ L'​installation de ce paquet doit se faire de préférence en utilisant [[terminal]] via la commande :​ <​code>​sudo apt install mysql-server</​code>​
-[[apt>​mysql-server]] est un [[:​tutoriel:​creer un meta paquet|méta-paquet]] ​qui installera MySQL 5.7 sur [[:​xenial|Xenial 16.04]] et sur [[:​bionic|Bionic 18.04]].+Sinon [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] [[apt>​mysql-server]].
  
 ===== Utilisation ===== ===== Utilisation =====
Ligne 18: Ligne 18:
 ==== Démarrage ==== ==== Démarrage ====
  
-Pour démarrer le serveur MySQL, tapez la [[:​commande_shell|commande]] suivante dans un [[:​terminal]]:​ +Pour démarrer le serveur MySQL, tapez la [[:​commande_shell|commande]] suivante dans un [[:​terminal]] :​ 
- +<code bash>sudo systemctl start mysql</​code>​
-  ​sudo systemctl start mysql+
  
  
 ==== Redémarrage ==== ==== Redémarrage ====
  
-Pour redémarrer le serveur MySQL, tapez la [[:​commande_shell|commande]] suivante dans un [[:​terminal]]:​ +Pour redémarrer le serveur MySQL, tapez la [[:​commande_shell|commande]] suivante dans un [[:​terminal]] :​ 
- +<​code>​sudo systemctl restart mysql</​code>​
-  ​sudo systemctl restart mysql +
- +
-==== Arrêt ==== +
- +
-Pour arrêter le serveur MySQL, tapez la [[:​commande_shell|commande]] suivante dans un [[:​terminal]]:​ +
-  sudo systemctl stop mysql+
  
 ==== Rechargement de la configuration ==== ==== Rechargement de la configuration ====
  
 Pour que MySQL prenne en compte les modifications de sa configuration,​ [[:​commande_shell|commande]] suivante dans un [[:​terminal]]:​ Pour que MySQL prenne en compte les modifications de sa configuration,​ [[:​commande_shell|commande]] suivante dans un [[:​terminal]]:​
-  ​sudo systemctl reload mysql+<​code>​sudo systemctl reload mysql</​code>​
  
 ==== Forcer la prise en compte de la nouvelle configuration ==== ==== Forcer la prise en compte de la nouvelle configuration ====
  
 Pour forcer MySQL à recharger ses fichiers de configuration,​ [[:​commande_shell|commande]] suivante dans un [[:​terminal]]:​ Pour forcer MySQL à recharger ses fichiers de configuration,​ [[:​commande_shell|commande]] suivante dans un [[:​terminal]]:​
-  ​sudo systemctl force-reload mysql+<​code>​sudo systemctl force-reload mysql</​code>​
  
 ==== Connaître la version ==== ==== Connaître la version ====
Ligne 54: Ligne 47:
 L'​inscription des utilisateurs de MySQL se fait sur la table //users// de la base de données //mysql//. On peut donc les administrer manuellement depuis cette table, mais il existe des outils pour simplifier leur gestion (tels que ''​mysqladmin'',​ ''​mysql_secure_installation'',​ [[:​mysql_outils#​adminer|adminer]] ou [[:​phpMyAdmin]]). L'​inscription des utilisateurs de MySQL se fait sur la table //users// de la base de données //mysql//. On peut donc les administrer manuellement depuis cette table, mais il existe des outils pour simplifier leur gestion (tels que ''​mysqladmin'',​ ''​mysql_secure_installation'',​ [[:​mysql_outils#​adminer|adminer]] ou [[:​phpMyAdmin]]).
  
-Il existe plusieurs méthodes d'​authentifications. Nativement MySQL permet de définir ses propres couples d'​utilisateurs et de mots de passe. Mais il existe des plugins permettant d'​implémenter d'​autres comportements,​ dont //​[[https://​dev.mysql.com/​doc/​refman/​5.7/​en/​socket-pluggable-authentication.html|auth_socket]]//​ qui permet de s'​identifier au moyen de comptes UNIX (qui correspondent donc aux utilisateurs Ubuntu).\\ +Il existe plusieurs méthodes d'​authentifications. Nativement MySQL permet de définir ses propres couples d'​utilisateurs et de mots de passe. Mais il existe des plugins permettant d'​implémenter d'​autres comportements,​ dont //​[[https://​dev.mysql.com/​doc/​refman/​5.7/​en/​socket-pluggable-authentication.html|auth_socket]]//​ qui permet de s'​identifier au moyen de comptes UNIX (qui correspondent donc aux utilisateurs Ubuntu).
 Il faut tout de même créer le compte sur MySQL pour pouvoir l'​utiliser,​ mais il n'est plus nécessaire de renseigner le mot de passe. Il faut par contre lancer le client (la commande''​mysql''​ ou le script [[:PHP]]) avec l'​utilisateur correspondant. Il faut tout de même créer le compte sur MySQL pour pouvoir l'​utiliser,​ mais il n'est plus nécessaire de renseigner le mot de passe. Il faut par contre lancer le client (la commande''​mysql''​ ou le script [[:PHP]]) avec l'​utilisateur correspondant.
  
Ligne 65: Ligne 58:
 ==== Lancer la console MySQL ==== ==== Lancer la console MySQL ====
  
-**Avant [[:​bionic|Ubuntu 18.04 Bionic]]**\\ +L’utilisateur root de MySQL est authentifié par son compte système (plugin //​auth_socket//​) et non plus par un mot de passe (plugin //​mysql_native_password//​).
-L’authentification de l'​utilisateur root de MySQL se fait par mot de passe (//​mysql_native_password//​). +
-  * Si vous n'avez pas défini de mot de passe (déconseillé) : <​code>​mysql -u root</​code>​ +
-  * Si vous avez défini un mot de passe : <​code>​mysql -u root -p</​code>​ et tapez votre mot de passe. +
- +
-**À partir de [[:​bionic|Ubuntu 18.04 Bionic]]**\\ +
-À partir ce cette version l'utilisateur root de MySQL est authentifié par son compte système (plugin //​auth_socket//​) et non plus par un mot de passe (plugin //​mysql_native_password//​).+
 <​code>​sudo mysql</​code>​ <​code>​sudo mysql</​code>​
  
Ligne 101: Ligne 88:
 ==== Ajouter ou changer le mot de passe de root ==== ==== Ajouter ou changer le mot de passe de root ====
  
-<note warning>​ +Il est vivement déconseillé de modifier la méthode d'​[[#​authentification]] par défaut de l'​utilisateur //root// (//​auth_socket//​). Le système utilise ce compte pour effectuer des tâches de maintenance (auparavant Ubuntu créait un compte spécial //​debian-sys-maint//​ à cette fin).
-À partir de [[:​bionic|Bionic 18.04]] il est vivement déconseillé de modifier la méthode d'​[[#​authentification]] par défaut de l'​utilisateur //root// (//​auth_socket//​). Le système utilise ce compte pour effectuer des tâches de maintenance (auparavant Ubuntu créait un compte spécial //​debian-sys-maint//​ à cette fin).+
  
 Si vous souhaitez créer un accès "​super-administrateur"​ pour gérer l'​intégralité de vos bases de données et de leurs utilisateurs avec une application tierce ([[:​phpMyAdmin]],​ [[mysql_outils#​adminer|Adminer]],​ ou autre), suivez [[phpmyadmin#​acces_root|cette autre procédure]]. Si vous souhaitez créer un accès "​super-administrateur"​ pour gérer l'​intégralité de vos bases de données et de leurs utilisateurs avec une application tierce ([[:​phpMyAdmin]],​ [[mysql_outils#​adminer|Adminer]],​ ou autre), suivez [[phpmyadmin#​acces_root|cette autre procédure]].
-</​note>​ 
- 
-Pour changer ou attribuer un mot de passe à l'​utilisateur //root// (qui n'est pas forcément le même que l'​utilisateur //root// du système) **seulement sur [[:​xenial|Xenial 16.04]] et précédents** : 
- 
-Dans la console MySQL : 
- 
-  ALTER USER '​root'​@'​localhost'​ IDENTIFIED WITH mysql_native_password BY '​le_mot_de_pass_choisi';​ 
- 
-Ou avec ''​mysqladmin''​ pour changer le mot de passe : 
- 
-  sudo mysqladmin password Nouveau_mot_de_passe -p Ancien_mot_de_passe 
- 
-Vous pourrez avoir besoin de mettre votre mot de passe entre guillemet si celui ci comporte des caractères spéciaux. 
- 
-  ​ 
-==== Redéfinir de force le mot de passe de root ==== 
- 
-<note important>​Ceci ne s'​applique que pour les versions n'​utilisant pas //​[[#​authentification|auth_socket]]//​ par défaut pour le compte //root//, donc [[:​xenial|Xenial 16.04]] et les versions précédentes ([[:​trusty|Trusty 14.04]]). 
- 
-Sur [[:​bionic|Bionic 18.04]] MySQL n'​utilise pas de mot de passe pour le compte //root//. Il se sert du système d'​authentification des utilisateurs Ubuntu, et donc de [[:​sudo]].</​note>​ 
- 
-Deux possibilités s'​offrent à vous. Une méthode simple : <​code>​sudo dpkg-reconfigure mysql-server-5.7</​code>​ 
- 
-Une méthode plus compliquée,​ si vous avez perdu votre mot de passe root pour MySQL, suivez ces quelques étapes : 
-  * On se connecte à l'aide du compte spécial debian-syst-maint (défini dans le fichier /​etc/​mysql/​debian.cnf) : <​code>​sudo mysql --defaults-file=/​etc/​mysql/​debian.cnf</​code>​ 
-  * On met en place le nouveau mot de passe : <code mysql> 
-ALTER USER '​root'​@'​localhost'​ IDENTIFIED WITH mysql_native_password BY '​le_mot_de_pass_choisi';</​code><​code mysql>​FLUSH PRIVILEGES;</​code>​ 
- 
-  * On quitte le prompt de MySQL : <code mysql>​QUIT;</​code>​ 
- 
  
 ==== Utilisateurs ==== ==== Utilisateurs ====
Ligne 244: Ligne 200:
  
 Pour autoriser l'​accès venant de toutes machines (limité par l'​authentification),​ remplacer ''​[adresse IP]''​ par le symbole ''​%''​. Pour autoriser l'​accès venant de toutes machines (limité par l'​authentification),​ remplacer ''​[adresse IP]''​ par le symbole ''​%''​.
 +
 +Il est fortement conseillé que le ''​[nom utilisateur]''​ soit différent du nom d'​utilisateur connecté en local ''​[localhost]''​ pour éviter les blocages de connexion.
  
 Pour rendre ces modifications effectives, terminez par : Pour rendre ces modifications effectives, terminez par :
 <code mysql>​FLUSH PRIVILEGES;</​code>​ <code mysql>​FLUSH PRIVILEGES;</​code>​
 +
 +Cette modification des droits de l'​utilisateur (ou l'​ajout d'un nouvel utilisateur avec des droits différents) peut aussi se faire dans [[phpmyadmin|phpMyAdmin]].
  
 ==== Configuration en UTF-8 ==== ==== Configuration en UTF-8 ====
Ligne 364: Ligne 324:
 </​code>​ </​code>​
  
-Pour la syntaxe des requêtes SQL, reportez-vous à la [[http://​dev.mysql.com/​doc/​|documentation MySQL]].+Pour la syntaxe des requêtes SQL, reportez-vous à la [[https://​dev.mysql.com/​doc/​|documentation MySQL]].
  
 ===== Autres opérations ===== ===== Autres opérations =====
  
-Qt4 avec MySQL:+MySQL avec Qt5:
  
-Installer la librairie ​pour mysql afin de l'​utiliser sous QT :+Installer la bibliothèque Qt5 pour mysql afin de l'​utiliser sous Qt :
  
-<​code>​sudo apt install ​libqt4-sql-mysql</​code>​+<​code>​sudo apt install ​libqt5sql5-mysql</​code>​
  
  
Ligne 397: Ligne 357:
 </​note>​ </​note>​
  
-D'​autres commandes telles que la suppression des tables, de la base, l'​ajout des données dans la base des données, etc. peuvent être trouvées sur le [[http://​dev.mysql.com/​doc/​refman/​5.0/​fr/​sql-syntax.html|site de documentation de MySQL]].+D'​autres commandes telles que la suppression des tables, de la base, l'​ajout des données dans la base des données, etc. peuvent être trouvées sur le [[https://​dev.mysql.com/​doc/​refman/​5.0/​fr/​sql-syntax.html|site de documentation de MySQL]].
  
  
Ligne 405: Ligne 365:
 MySQL stocke ses fichiers dans le dossier /​var/​lib/​mysql. Il arrive avec le temps et l'​utilisation que le fichier ibdata1 occupe un espace disque très important qui ne sera pas récupéré même en supprimant toutes les bases. MySQL stocke ses fichiers dans le dossier /​var/​lib/​mysql. Il arrive avec le temps et l'​utilisation que le fichier ibdata1 occupe un espace disque très important qui ne sera pas récupéré même en supprimant toutes les bases.
  
-Pistes pour comprendre et corriger ce problème : +Pistes pour comprendre et corriger ce problème :
   * [[http://​bytes.com/​groups/​mysql/​495219-mysql-ibdata1-compact-space|Supprimer les tables InnoDB pour récupérer l'​espace]]   * [[http://​bytes.com/​groups/​mysql/​495219-mysql-ibdata1-compact-space|Supprimer les tables InnoDB pour récupérer l'​espace]]
-  * [[http://​bugs.mysql.com/​bug.php?​id=1287|"​Bogue"​ associé]] +  * [[https://​bugs.mysql.com/​bug.php?​id=1287|"​Bogue"​ associé]] 
-  * Exporter toutes les bases de données, arrêter mysql, supprimer le fichier, démarrer ​sql et importer toutes les bases.+  * Exporter toutes les bases de données, arrêter mysql, supprimer le fichier, démarrer ​mysql et importer toutes les bases.
  
  
Ligne 426: Ligne 386:
 En cas de problème de configuration lors d'un premier déploiement d'un serveur MySQL on doit donc effectuer un certain nombre d'​opérations manuelles afin de réinitialiser complètement son installation. Attention cela rendra les bases de données existantes inaccessibles ! En cas de problème de configuration lors d'un premier déploiement d'un serveur MySQL on doit donc effectuer un certain nombre d'​opérations manuelles afin de réinitialiser complètement son installation. Attention cela rendra les bases de données existantes inaccessibles !
  
-<​code>​sudo apt autoremove --purge ^mysql-server ^mariadb-server+<​code>​sudo apt autoremove --purge ​~n^mysql-server ​~n^mariadb-server</​code>​ 
 + 
 +Puis : 
 +<​code>​
 sudo mv /​var/​lib/​mysql /​var/​lib/​mysql.bak sudo mv /​var/​lib/​mysql /​var/​lib/​mysql.bak
 sudo mv /etc/mysql /​etc/​mysql.bak sudo mv /etc/mysql /​etc/​mysql.bak
Ligne 441: Ligne 404:
  
 Consultez le journal de [[:​systemd]] : Consultez le journal de [[:​systemd]] :
-<​code>​journalctl -xe</​code>​+<​code>​journalctl -xe -u mysql</​code>​ 
 +et les logs dans /​var/​log/​mysql/​error.log
  
 === AppArmor === === AppArmor ===
Ligne 474: Ligne 438:
   * [[https://​www.mysql.com/​|Le site officiel de MySQL]] [en]   * [[https://​www.mysql.com/​|Le site officiel de MySQL]] [en]
   * [[http://​www.mysql.fr/​|Le site officiel francophone]] [fr]   * [[http://​www.mysql.fr/​|Le site officiel francophone]] [fr]
-  * [[http://​www.system-linux.eu/​index.php?​category/​Mysql|Aller plus loin avec MySQL]] [fr]+  * [[https://​www.system-linux.eu/​index.php?​category/​Mysql|Aller plus loin avec MySQL]] [fr]
   * La page dédiée aux [[:​mysql_outils|outils MySQL]]   * La page dédiée aux [[:​mysql_outils|outils MySQL]]
   * [[:​greensql|GreenSQL : Pare-feu applicatif SQL]]   * [[:​greensql|GreenSQL : Pare-feu applicatif SQL]]
-  * [[http://​mysql.developpez.com/​|La section dédiée à MySQL sur Developpez.com]] [fr]+  * [[https://​mysql.developpez.com/​|La section dédiée à MySQL sur Developpez.com]] [fr]
   * La page des [[:​SGBD|systèmes de gestion de base de données]]   * La page des [[:​SGBD|systèmes de gestion de base de données]]
   * [[:​MariaDB]] -> Le serveur alternatif 100% compatible MySQL   * [[:​MariaDB]] -> Le serveur alternatif 100% compatible MySQL
  • mysql.1603882545.txt.gz
  • Dernière modification: Le 28/10/2020, 11:55
  • par krodelabestiole