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 | ||
mysql [Le 12/04/2019, 14:50] krodelabestiole [Réinstallation complète] |
mysql [Le 27/10/2021, 15:25] bruno [Le server MySQL ne démarre pas ("time out") ou s'arrête au bout de quelques secondes] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Xenial Bionic sgbd mysql serveur réseau}} | + | {{tag>Xenial Bionic Focal sgbd mysql serveur réseau}} |
- | + | ||
- | ---- | + | |
====== MySQL ====== | ====== MySQL ====== | ||
- | **[[https://www.mysql.com/|MySQL]]** est un [[wpfr>SGBD|système de gestion de bases de données relationnelles]] (SGBDR) libre, gratuit, performant, très populaire, multi-threadé, multi-utilisateurs… | + | **[[https://www.mysql.com/|MySQL]]** est un [[wpfr>SGBD|système de gestion de bases de données relationnelles]] (SGBDR) propriétaire, gratuit, performant, très populaire, multi-threadé, multi-utilisateurs… |
- | <note tip>MySQL appartient à [[wpfr>Oracle_(entreprise)|Oracle]]. Il existe un fork plus communautaire, 100% compatible MySQL et a priori plus performant créé et maintenu par Michael Wideniusm fondateur de MySQL. Il s'agit de [[:MariaDB]], qui est également disponible sur Ubuntu, et choisi par défaut sur [[wpfr>Debian]].</note> | + | <note tip>MySQL appartient à [[wpfr>Oracle_(entreprise)|Oracle]]. Il existe un fork open-source, plus communautaire, 100% compatible MySQL et a priori plus performant créé et maintenu par Michael Wideniusm fondateur de MySQL. Il s'agit de [[:MariaDB]], qui est également disponible sur Ubuntu, et choisi par défaut sur [[wpfr>Debian]].</note> |
MySQL est principalement un //serveur// de bases de données. Pour s'y connecter localement ou à distance, on utilise un //client//. Il peut s'agir de la commande ''mysql'', ou couramment d'un script [[:PHP]]. Il faudra dans ce cas installer le [[:php#association_avec_un_serveur_de_base_de_donnees|module]] [[apt>php-mysql]] qui permet à PHP de communiquer avec un serveur MySQL. | MySQL est principalement un //serveur// de bases de données. Pour s'y connecter localement ou à distance, on utilise un //client//. Il peut s'agir de la commande ''mysql'', ou couramment d'un script [[:PHP]]. Il faudra dans ce cas installer le [[:php#association_avec_un_serveur_de_base_de_donnees|module]] [[apt>php-mysql]] qui permet à PHP de communiquer avec un serveur MySQL. | ||
Ligne 14: | 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]]. | + | [[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]], MySQL 8.0 sur [[:Focal|Focal 20.04]]. |
===== Utilisation ===== | ===== Utilisation ===== | ||
Ligne 156: | Ligne 154: | ||
CREATE USER 'nom_utilisateur_choisi'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mot_de_passe_solide'; | CREATE USER 'nom_utilisateur_choisi'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mot_de_passe_solide'; | ||
</code> | </code> | ||
+ | ou si cette commande échoue avec une erreur de syntaxe : | ||
+ | <code mysql> | ||
+ | CREATE USER 'nom_utilisateur_choisi'@'localhost' IDENTIFIED BY 'mot_de_passe_solide'; | ||
+ | </code> | ||
+ | |||
Ou pour créer un accès MySQL à un utilisateur Ubuntu (seulement dans le cadre d'une utilisation avancée, et si vous comprenez ce que vous faites) : | Ou pour créer un accès MySQL à un utilisateur Ubuntu (seulement dans le cadre d'une utilisation avancée, et si vous comprenez ce que vous faites) : | ||
Ligne 241: | Ligne 244: | ||
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 331: | Ligne 338: | ||
<code mysql> | <code mysql> | ||
CREATE DATABASE application; | CREATE DATABASE application; | ||
- | GRANT ALL PRIVILEGES ON application.* TO 'application'@'localhost' IDENTIFIED BY 'mot_de_passe'; | + | CREATE USER 'utilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe'; |
+ | GRANT ALL ON application.* TO 'utilisateur'@'localhost'; | ||
FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||
QUIT; | QUIT; | ||
</code> | </code> | ||
- | Il faut remplacer dans ces requêtes ''application'' par le nom de l'application web (ou du site internet, sans espace) et ''mot_de_passe'' par un vrai mot de passe complexe qu'on note : on devra renseigner ces identifiants lors de l'installation de l'application. | + | Il faut remplacer dans ces requêtes ''application'' par le nom de l'application web ou du site internet (sans espace ni caractère spécial) , ''utilisateur'' par un nom d'utilisateur (qui peut aussi être celui de l'application, pour s'y retrouver facilement) et ''mot_de_passe'' par un vrai mot de passe complexe qu'on note : on devra renseigner ces identifiants lors de l'installation de l'application. |
- | On vient de créer la base de donnée //application// à laquelle l'utilisateur //application// aura accès. | + | On vient de créer la base de donnée //application// à laquelle l'utilisateur //utilisateur// aura accès. |
==== Tables ==== | ==== Tables ==== | ||
Ligne 364: | Ligne 372: | ||
===== 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 404: | Ligne 412: | ||
* [[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é]] | * [[http://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 422: | Ligne 430: | ||
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\* | + | Pour Ubuntu avant 20.04 : |
+ | <code>sudo apt autoremove --purge mysql-server\* mariadb-server\*</code> | ||
+ | À partir de Ubuntu 20.04 : | ||
+ | <code>sudo apt autoremove --purge ~n^mysql-server ~n^mariadb-server</code> | ||
+ | |||
+ | Puis quelle que soit la version : | ||
+ | <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 437: | Ligne 451: | ||
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 450: | Ligne 465: | ||
Il faut ensuite redémarrer l'ordinateur (redémarrer le service //apparmor// ne suffit pas). | Il faut ensuite redémarrer l'ordinateur (redémarrer le service //apparmor// ne suffit pas). | ||
- | ==== Conflit entre MySQL et MariaDB ==== | + | ==== Installation de MySQL impossible ==== |
+ | |||
+ | === Conflit entre MySQL et MariaDB === | ||
Si vous rencontrez une erreur de ce type lors de l'installation de MySQL : | Si vous rencontrez une erreur de ce type lors de l'installation de MySQL : | ||
Ligne 461: | Ligne 478: | ||
Il s'agit probablement d'un conflit entre MySQL et [[:MariaDB]]. Le plus simple est de [[#reinstallation_complete|réinstaller complètement MySQL]]. | Il s'agit probablement d'un conflit entre MySQL et [[:MariaDB]]. Le plus simple est de [[#reinstallation_complete|réinstaller complètement MySQL]]. | ||
+ | |||
+ | Il est également possible que des fichiers [[:systemd]] pour [[:MariaDB]] persistent après une mauvaise désinstallation, et empêchent une nouvelle installation propre. Pour résoudre ce problème, suivez [[https://askubuntu.com/a/1235833|cette procédure]]. | ||
===== Voir aussi ===== | ===== Voir aussi ===== |