GNU/Linux >> Tutoriels Linux >  >> Panels >> Webmin

Serveur de base de données MySQL

Sur cette page la base de données MySQL et le module Webmin qui le gère sont expliqués, et les étapes à suivre pour créer des bases de données, des tables et des utilisateurs sont listées.

Voir Introduction à MySQL

Ce module vous permet de créer des bases de données, des tables et des champs, de modifier des enregistrements et de gérer les utilisateurs de MySQL via une interface Web simple. Son icône se trouve dans la catégorie Serveurs, et lorsque vous cliquez dessus, la page principale du module affiche un tableau d'icônes pour les bases de données existantes, comme indiqué dans la capture d'écran ci-dessous (en supposant que MySQL est installé et en cours d'exécution).

La page principale du module MySQL Database Server, juste après l'installation de mariadb-server, et en exécutant le recommandé /usr/bin/mysql_secure_installation pour supprimer les failles de sécurité

Si le serveur de base de données est en cours d'exécution mais que Webmin ne connaît pas le mot de passe correct pour s'y connecter, la page principale affichera à la place un formulaire *Connexion MySQL*. Vous devez saisir le nom d'utilisateur de l'administrateur dans le champ Login' (généralement root) et le mot de passe correspondant dans le champ Mot de passe domaine. Même s'il est possible d'entrer le nom d'utilisateur et le mot de passe de n'importe quel utilisateur MySQL, les utilisateurs non root ne peuvent pas effectuer de tâches telles que la création de bases de données et de tables - et le module ne le pourra donc pas non plus.

Par défaut, le module est configuré pour se connecter avec le nom d'utilisateur et le mot de passe que le package MySQL pour votre distribution utilise par défaut. Ce n'est que si vous l'avez modifié manuellement ou via Webmin que la connexion MySQL page apparaît.

Si le serveur de base de données n'est pas du tout installé sur votre système, la page principale affichera un message d'erreur comme *Le programme client MySQL /usr/bin/mysql n'a pas été trouvé sur votre système*. Vérifiez votre CD de distribution ou votre site Web pour tous les packages liés à MySQL et installez-les à l'aide du module Software Packages. Il y en a souvent plusieurs, nommés quelque chose comme mysql, mysql-client, mysql-server et mysql-devel. Chaque distribution Linux semble utiliser un ensemble de packages différent, alors assurez-vous de les installer tous.

Sur FreeBSD et NetBSD, le module s'attend à ce que le package MySQL pour ces systèmes d'exploitation soit installé. Sur les autres variantes d'Unix, il suppose que vous avez compilé et installé MySQL à partir de la distribution du code source, disponible sur http://www.mysql.com/.

Si le module se plaint de ne pas trouver le programme mysql même s'il est installé, vous devrez ajuster les chemins qu'il utilise. Cela peut arriver si vous l'avez installé à partir de la source au lieu d'utiliser le package fourni avec votre distribution Linux.

Le module MySQL utilise des commandes SQL pour effectuer des actions telles que la création de tables, l'ajout de champs et la modification d'enregistrements. Pour exécuter ces commandes, Webmin doit se connecter au serveur de base de données, ce qui peut être fait de deux manières. Il peut soit exécuter la commande mysql avec les paramètres corrects et analyser sa sortie, soit utiliser la bibliothèque Perl DBI pour se connecter directement.

La première méthode est toujours disponible, car la commande mysql est toujours installée lorsque le serveur de base de données l'est. Cependant, il n'est pas totalement fiable car certains types de données de table produisent une sortie qui ne peut pas toujours être analysée. Pour cette raison, vous devez installer les modules DBI et DBD::mysql Perl. Si l'un ou l'autre est manquant, un message s'affichera au bas de la page principale vous invitant à en installer un ou les deux en cliquant sur un lien. Cela vous mènera à une page du module Modules Perl (couvert au chapitre 27) où DBI et/ou DBD::mysql sont téléchargés et installés pour vous.

Contenu

Création d'une nouvelle base de données

La page d'édition de la base de données

Lorsque MySQL est installé pour la première fois, une base de données appelée mysql est créée et contient des tables liées à l'authentification et au contrôle d'accès. Si vous souhaitez stocker vos propres données, il est préférable de créer votre propre base de données pour y ajouter des tables au lieu de jouer avec la base de données mysql. Pour ce faire, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur Créer une nouvelle base de données lien au-dessus ou au-dessous du tableau des icônes de la base de données existante. Cela vous mènera à un formulaire pour entrer les détails de la nouvelle base de données.
  2. Saisissez un nom pour la nouvelle base de données dans le champ Nom de la base de données domaine. Les noms ne doivent contenir que des lettres et des chiffres, et aucun espace.
  3. Il est possible d'utiliser le formulaire pour créer une table initiale pour la nouvelle base de données. Cependant, vous pouvez aussi facilement en ajouter un après sa création que le Créer un nouveau tableau section explique.
  4. Cliquez sur Créer bouton en bas du formulaire pour créer la base de données. Vous serez renvoyé à la page principale du module, qui comprendra désormais une nouvelle icône de base de données.

Créer un nouveau tableau

La page d'édition de table

Des tables peuvent être ajoutées à tout moment à des bases de données nouvellement créées ou existantes. Chaque table a un ou plusieurs champs, chacun ayant un type (tel que entier, décimal ou texte) et une taille. Les champs peuvent également être indexés pour accélérer les requêtes SQL qui recherchent des enregistrements en fonction des valeurs de cette colonne. Pour ajouter une nouvelle table à une base de données, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données. Cela vous amènera à la page d'édition de la base de données illustrée dans la capture d'écran ci-dessous, qui contient une icône pour chaque table existante et des boutons pour effectuer diverses actions.
  2. Entrez le nombre de champs que vous voulez que votre nouvelle table ait dans les Champs zone de texte à côté de Créer un nouveau tableau bouton , puis cliquez sur le bouton . Cela fait apparaître un formulaire pour entrer les détails de la nouvelle table et ses champs initiaux.
  3. Saisissez un nom pour cette table dans le champ Nom de la table domaine. Il doit être composé de lettres, de chiffres et du caractère _, et doit être unique dans cette base de données.
  4. Pour que ses champs soient copiés à partir d'une table existante, sélectionnez-la dans le champ Copier les champs de la table menu. Tous les champs supplémentaires que vous saisissez ci-dessous dans les Champs initiaux table sera ajoutée après celle copiée.
  5. Le type de tableau peut être utilisé pour choisir un type de stockage différent pour cette table. Les types les plus couramment utilisés sont :
    MyISAM
    Le type de table standard pour MySQL versions 3.23 et supérieures. Sur les systèmes d'exploitation qui prennent en charge les fichiers volumineux, les tables de cette taille peuvent avoir une taille d'environ 2 000 000 000 Go. Les fichiers de table sont indépendants du système d'exploitation, les clés peuvent avoir une longueur de 500 octets et 32 colonnes de clés peuvent être utilisées dans une seule table.
    InnoDB
    Un type de table supérieur qui prend en charge les transactions, d'énormes quantités de données et s'exécute beaucoup plus rapidement que MyISAM.
    ISAM
    L'ancien type de table MySQL standard, désormais remplacé par MyISAM. Un fichier de table ISAM ne peut avoir qu'une taille de 4 Go, les clés ne peuvent avoir que 256 octets de long et une table peut avoir au plus 16 colonnes de clés.
    Tas
    Les données des tables Heap sont stockées uniquement en mémoire. Cela les rend très rapides, mais utiles uniquement pour les données temporaires car le contenu de la table sera perdu si MySQL est arrêté. Si vous sélectionnez le Par défaut option ou si le type choisi n'est pas pris en charge par MySQL sur votre système, le type MyISAM sera utilisé.
  6. Les champs initiaux La section sert à entrer les détails des champs réels que votre nouvelle table contiendra. Chaque ligne que vous remplissez définit un seul champ, basé sur les valeurs que vous saisissez sous chacun des en-têtes suivants :
    Nom du champ
    Un nom unique pour ce champ, qui doit être composé de lettres, de chiffres et du caractère _. Ce n'est pas une bonne idée de choisir un nom identique à un mot réservé SQL, tel que select, update ou index.
    Type de données
    Dans ce menu, vous devez sélectionner le type de données dans ce champ. Les plus courants sont varchar (pour les chaînes de texte de longueur variable) et int (pour les nombres entiers). Voir les types de champs section ci-dessous pour une liste complète des types pris en charge.
    Largeur du texte
    La taille des données pouvant être stockées dans ce champ. Cela a des significations différentes selon le type - par exemple, pour un champ varchar, la largeur est la longueur maximale du texte, mais pour un champ int, c'est le nombre maximal de chiffres décimaux. Encore une fois, les types de champs section de ce chapitre couvre les largeurs plus en détail. Si vous laissez cette zone de texte vide pour un champ, la largeur par défaut sera utilisée. De nombreux types (tels que blob, texte et date) ont des tailles fixes et ne doivent donc pas du tout entrer de largeur.
    Clé primaire ?
    Si cette case est cochée, ce champ fera partie de la clé primaire de la table. Les champs clés sont indexés par MySQL, de sorte que les instructions SQL qui y font référence dans la clause where s'exécutent plus rapidement. Cependant, deux enregistrements ne peuvent pas avoir les mêmes valeurs dans leur(s) champ(s) de clé primaire. Traditionnellement, le premier champ d'une table est la clé. Tous les types ne peuvent pas être utilisés - généralement, un champ de clé primaire est un int ou un varchar. Toutes les tables doivent avoir une clé primaire, afin que les données qu'elles contiennent puissent être modifiées dans Webmin.
    Incrémentation automatique ?
    Si cette option est cochée pour un champ numérique, MySQL insèrera automatiquement un nombre un supérieur au maximum dans la table chaque fois qu'un enregistrement est ajouté (à moins que l'instruction de création d'enregistrement ne spécifie explicitement une valeur). Cela peut être utile pour la génération automatique de numéros d'identification et est souvent activé pour les champs de clé primaire.
  7. Une fois que vous avez saisi tous les champs, cliquez sur Créer bouton en bas du formulaire. Si la table ne peut pas être créée pour une raison quelconque, le message d'erreur SQL de MySQL s'affichera. Cela peut se produire si un nom de champ n'est pas valide ou si la largeur d'un type n'a pas de sens pour un type. Si cela se produit, utilisez le bouton de retour de votre navigateur pour revenir au formulaire et résoudre les problèmes. Une fois la table créée avec succès, vous serez renvoyé à la page d'édition de la base de données qui inclura désormais une nouvelle icône de table.

Ajouter et modifier des champs

Modifier le champ

De nouveaux champs peuvent être ajoutés à une table et les champs existants modifiés ou supprimés. L'ajout d'un champ ne présente aucun risque pour les données existantes, mais la modification du type ou de la taille d'un peut - et la suppression d'un champ entraînera la perte des données qu'il contient. Pour ajouter un nouveau champ, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données qui contient la table, puis sur l'icône de la table. Cela fera apparaître la page illustrée dans l'image ci-dessous, qui répertorie les noms, les types et d'autres détails de tous les champs existants.
  2. Sélectionnez le type du nouveau champ dans le menu à côté du bouton *Ajouter un champ de type* avant de cliquer dessus. Voir les types de champs section ci-dessous pour une liste des types et leurs objectifs.
  3. Sur le formulaire d'ajout de champ qui s'affiche, saisissez un nom unique pour ce champ dans le champ Nom du champ zone de texte. Deux champs d'une même table ne peuvent pas porter le même nom et seuls des lettres, des chiffres et _ peuvent être utilisés.
  4. Si vous ajoutez un champ char ou varchar, vous devez entrer un nombre maximum de caractères dans la largeur du type zone de texte. Si vous ajoutez un champ flottant, double ou décimal, vous devez entrer deux nombres dans Largeur et décimales zones de texte. Le premier est le nombre total de chiffres qu'une valeur peut contenir, et le second le nombre de chiffres à droite de la virgule décimale. Pour les nombres négatifs, le signe moins compte comme un chiffre - donc un champ avec Largeur et décimales réglé sur 5 et 2 pourrait stocker des nombres de 99,99 à 999,99. Pour les champs date, datetime, time, blob et text, il n'y a aucune entrée de largeur, car ces types ont des tailles fixes ou illimitées. Pour les champs enum et set, vous devez saisir une liste de valeurs possibles dans la zone de texte *Valeurs énumérées*. Pour tous les autres types de champs (tels que int), la largeur du type peut être défini sur Par défaut pour que le champ utilise la taille par défaut pour le type choisi, ou une largeur peut être saisie. Pour les champs int, il s'agit du nombre maximum de chiffres qu'une valeur de ce champ peut contenir.
  5. Pour les types de champs entiers (tels que int et smallint), les boutons radio *Options de type* vous permettent de choisir si les valeurs de ce champ doivent être remplies à gauche avec des zéros (l'option Remplir avec des zéros option), ou s'ils doivent être non signés (l'option Non signé option). Si Aucun est sélectionné, les valeurs seront signées et aucun zéro supplémentaire ne sera ajouté. Pour les champs flottants, doubles et décimaux, les mêmes options de type sont également affichés mais sans le Non signé option. Les champs de ces types sont toujours signés. Pour les champs char et varchar, les options de type ont deux choix différents :sensible à la casse et Insensible à la casse . Si insensible est sélectionné, les requêtes SQL qui correspondent aux valeurs de ce champ ignoreront les différences de casse.
  6. Pour empêcher l'insertion de valeurs SQL NULL dans ce champ, modifiez le Allow null ? entrée sur Non . Cela peut être utile si chaque enregistrement doit avoir une valeur pour ce champ et doit être sélectionné si ce champ va faire partie de la clé primaire de la table.
  7. Pour qu'une valeur par défaut soit insérée lorsqu'un enregistrement est ajouté à la table et qu'aucune valeur n'est spécifiée pour ce champ, remplissez la Valeur par défaut zone de texte. Naturellement, la valeur doit être du type correct pour le champ. Si votre table contient déjà des lignes, leurs valeurs pour ce champ seront définies sur ce que vous entrez ici lorsque le nouveau champ est ajouté.
  8. Si ce champ doit être la clé de la table, modifiez la Part of primary key ? sélection sur Oui . Plus d'un champ fait partie de la clé, auquel cas il s'agit d'une combinaison de tous.
  9. Enfin, cliquez sur Créer . S'il n'y a pas d'erreurs dans vos entrées, le champ sera ajouté au tableau et vous serez renvoyé à la page d'édition du tableau.

Les champs nouvellement créés ou existants peuvent également être modifiés en suivant les étapes ci-dessous. Toutefois, modifier le type d'un champ ou réduire sa taille peut entraîner une perte de données si les anciennes valeurs ne sont pas compatibles avec le nouveau type. Par exemple, la conversion d'un varchar en int entraînera la perte de toutes les valeurs non numériques - cependant, la conversion d'un int en varchar est généralement sûre tant que la nouvelle taille est suffisamment grande.

  1. Sur la page principale du module, cliquez sur l'icône de la base de données qui contient la table, puis sur l'icône de la table. Cela fera apparaître la page affichée dans la capture d'écran ci-dessus, qui répertorie les noms, les types et d'autres détails de tous les champs existants.
  2. Cliquez sur le nom du champ que vous souhaitez modifier pour accéder au formulaire d'édition des champs.
  3. Pour renommer le champ, modifiez le Nom du champ zone de texte.
  4. Pour modifier le type de champ, sélectionnez-en un nouveau dans le menu *Type de données*. Comme expliqué ci-dessus, cela doit être fait avec précaution.
  5. Selon le type actuel, différentes entrées seront affichées pour modifier sa taille. Ce sont les mêmes que ceux expliqués à l'étape 4 des instructions de création de champ ci-dessus. L'augmentation de la taille d'un champ n'endommagera pas les données qu'il contient, mais sa diminution entraînera la troncation des valeurs si elles sont plus longues que la nouvelle taille.
  6. Les options de type , Autoriser les valeurs nulles ? , Valeur par défaut et Une partie de la clé primaire ? les entrées ont ici la même signification que dans les étapes de création du champ. Modifiez-les si vous souhaitez ajuster ces options pour le champ existant.
  7. Lorsque vous avez terminé, cliquez sur Enregistrer bouton en bas du formulaire. Le champ sera immédiatement mis à jour et toutes les données qu'il contient seront modifiées ou tronquées selon le cas.

Un champ existant peut être supprimé en cliquant sur Supprimer bouton sur le formulaire d'édition de champ au lieu de Enregistrer . Toutes les données qu'il contient seront immédiatement supprimées pour toujours. Naturellement, vous ne pouvez pas supprimer le dernier champ d'une table.

Types de champs

MySQL prend en charge la plupart des mêmes types de champs que les autres bases de données SQL. La meilleure source d'informations sur les types est la documentation officielle de MySQL, à l'adresse http://dev.mysql.com/doc/refman/4.1/en/data-types.html (pour MySQL 3 et 4), ou http://www .mysql.org/doc/refman/5.0/en/data-types.html (pour MySQL 5).

Les nouvelles versions de MySQL peuvent introduire plus de types, mais vous devriez toujours pouvoir modifier les données dans les champs de types non pris en charge.

Afficher et modifier le contenu du tableau

Le module MySQL vous permet de visualiser le contenu de n'importe quelle table dans n'importe quelle base de données. Les tables qui ont une clé primaire peuvent voir leurs enregistrements modifiés ou supprimés et de nouveaux ajoutés également. Malheureusement, il n'y a aucun moyen de modifier le contenu d'une table sans clé, car le module a besoin d'un moyen d'identifier des enregistrements spécifiques. Cependant, toutes les tables d'une base de données doivent en avoir une.

Pour afficher le contenu d'un tableau, procédez comme suit :

  1. Sur la page principale, cliquez sur l'icône de la base de données qui contient la table, puis sur l'icône de la table elle-même.
  2. Dans le formulaire d'édition du tableau, cliquez sur Afficher les données bouton en bas. Cela vous amènera à une page contenant un tableau des 20 premières lignes du tableau.
  3. Si le tableau contient plus de lignes qu'il n'est possible d'en afficher sur une seule page, le début et la fin de la plage visible et le nombre total de lignes seront affichés en haut. À côté se trouvent des flèches gauche et droite pour passer aux 20 enregistrements suivants ou précédents.
  4. Pour les grands tableaux, un formulaire de recherche s'affiche également en bas de page. Pour l'utiliser, sélectionnez un nom de champ dans le premier menu, un type de comparaison dans le second et entrez une valeur à rechercher dans la zone de texte finale. Lorsque la recherche est cliqué, seules les lignes pour lesquelles le champ choisi correspond seront affichées. Pour revenir à l'affichage de tous les enregistrements, cliquez sur Réinitialiser la recherche lien qui apparaît maintenant au-dessus du tableau. Le contient le type de comparaison trouve les enregistrements dans lesquels le champ contient le texte saisi, tandis que le correspond type recherche les enregistrements pour lesquels la valeur du champ correspond à un modèle SQL tel qu'utilisé dans une clause like. Dans un tel modèle, % correspond à n'importe quelle chaîne de caractères et _ correspond à n'importe quel caractère, comme * et   ? faire à l'invite du shell.
  5. Lors de l'affichage d'un grand tableau, un bouton intitulé Aller à s'affiche également en bas de la page. Si un nombre est entré dans le champ adjacent et que le bouton est cliqué, l'affichage passera immédiatement à cette ligne.

Si la table possède une clé primaire, cette même page peut également être utilisée pour modifier, supprimer ou ajouter des enregistrements. Les enregistrements à modifier doivent d'abord être sélectionnés en utilisant les cases à cocher à droite de chaque ligne, ou le Sélectionner tout et Inverser la sélection liens. Lorsque vous cliquez sur le bouton *Modifier les lignes sélectionnées*, la page s'affiche à nouveau avec les valeurs de tous les enregistrements choisis dans les zones de texte. Effectuez les modifications souhaitées, puis cliquez sur Enregistrer bouton en bas de la page pour mettre à jour la base de données. Ou appuyez sur Annuler si vous souhaitez arrêter l'édition sans enregistrer vos modifications.

Pour supprimer des enregistrements, sélectionnez-les en utilisant les mêmes cases à cocher et liens de sélection, puis cliquez sur Supprimer les lignes sélectionnées bouton. Les enregistrements choisis seront immédiatement supprimés de la base de données sans autre confirmation.

Pour ajouter un nouvel enregistrement, cliquez sur Ajouter une ligne bouton sous le tableau. Une ligne supplémentaire apparaîtra contenant des zones de texte vides pour que vous saisissiez de nouveaux détails. Cliquez sur Enregistrer ajoutera le nouvel enregistrement à la table et déplacera l'affichage afin que vous puissiez voir la nouvelle ligne. Vous pouvez également cliquer sur Annuler si vous changez d'avis sur l'ajout d'un enregistrement.

Normalement, les enregistrements sont modifiés ou ajoutés dans des champs de texte qui apparaissent dans le tableau dans les colonnes appropriées. Cependant, si vous éditez un tableau qui contient un blob ou un champ de texte, ou si l'option de configuration du module *Utiliser l'interface d'ajout de lignes verticales* est activée, une mise en page différente est utilisée. Au lieu de cela, les zones de texte des champs sont répertoriées dans une zone distincte à l'intérieur ou au-dessous du tableau, avec les étiquettes de nom de champ à droite. Pour les champs de texte ou de blob, une zone de texte s'affiche afin que vous puissiez saisir plusieurs lignes de texte si nécessaire.

Suppression de tables et de bases de données

Lorsqu'une table est supprimée d'une base de données, tous les enregistrements et champs qu'elle contient sont perdus. Vous pouvez supprimer n'importe quelle table, bien que la suppression de celles de la base de données mysql soit une mauvaise idée car elles contiennent des informations importantes sur le contrôle d'accès à MySQL. Pour en supprimer un, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données dont vous souhaitez supprimer la table, puis sur l'icône de la table elle-même.
  2. Cliquez sur le Déposer le tableau sous la liste des champs. Cela vous mènera à une page de confirmation qui vous demande si vous êtes sûr et vous indique combien d'enregistrements seront supprimés.
  3. Pour continuer, cliquez sur Déposer le tableau bouton à nouveau. Une fois qu'il a été supprimé, vous serez de retour à la liste des tables survivantes dans la base de données.

Il est également possible de supprimer une base de données entière et toutes les tables et tous les enregistrements qu'elle contient. Toute base de données peut être supprimée, mais supprimer la base de données mysql est une très mauvaise idée. Comme d'habitude, à moins que vous n'ayez fait une sauvegarde, il n'y a aucun moyen d'annuler la suppression.

En supposant que vous souhaitiez vraiment supprimer une base de données, suivez ces étapes :

  1. Sur la page principale, cliquez sur l'icône de la base de données que vous souhaitez supprimer.
  2. Cliquez sur Déposer la base de données sous la liste des tables. Une page de confirmation s'affichera, vous indiquant combien de tables et d'enregistrements seront perdus si vous continuez.
  3. Pour poursuivre la suppression, cliquez sur Supprimer la base de données bouton et vous serez renvoyé à la page principale du module lorsque cela sera fait.
  4. Alternativement, vous pouvez choisir de supprimer toutes les tables et leurs enregistrements en cliquant sur Simplement supprimer toutes les tables Au lieu. La base de données elle-même restera vide.

Exécuter des commandes SQL

Le module MySQL fournit également une interface simple pour exécuter des commandes SQL sur une base de données et afficher leur sortie. Les étapes pour l'utiliser sont :

  1. Sur la page principale, cliquez sur l'icône de la base de données dans laquelle vous souhaitez exécuter des commandes.
  2. Cliquez sur Exécuter SQL sous la liste des icônes du tableau. Cela vous mènera à une page pour entrer des commandes SQL, exécuter des fichiers de commandes et charger des données dans la base de données.
  3. Saisissez n'importe quelle commande SQL dans la zone de texte en haut de la page et cliquez sur Exécuter bouton. S'il y a eu une erreur dans votre syntaxe SQL ou si la commande ne peut pas être exécutée, le message d'erreur de MySQL s'affichera. Sinon, un tableau des résultats du SQL (le cas échéant) sera affiché. Seules les instructions SELECT produisent des résultats - UPDATE, INSERT et les autres commandes qui modifient les enregistrements ne le font pas.
  4. Lorsque vous avez terminé d'afficher les résultats, utilisez le formulaire *Retour à l'exécution SQL* pour revenir au formulaire.
  5. Chaque commande exécutée avec succès est ajoutée à un historique pour la base de données. Vous pouvez réexécuter une commande SQL précédente en laissant la zone de texte vide et en la sélectionnant dans le menu ci-dessous, puis en appuyant sur Exécuter . Pour effacer l'historique des commandes, cliquez sur Effacer l'historique bouton à la place. Cela peut être utile s'il est encombré d'anciennes déclarations que vous n'avez pas besoin de réutiliser.

La même page peut être utilisée pour exécuter plusieurs commandes à partir d'un fichier texte et afficher leur sortie. Étant donné que le processus est exactement le même que la restauration d'une sauvegarde, il est expliqué dans la partie restauration de la section Sauvegarder et restaurer une base de données section ci-dessous.

Sauvegarder et restaurer une base de données

Sauvegarde MySQL de toutes les bases de données

Si l'une de vos bases de données contient des informations importantes, elle doit être sauvegardée régulièrement au cas où une panne de disque ou une erreur SQL entraînerait une perte de données. Il est également conseillé de créer une sauvegarde avant d'effectuer une opération potentiellement risquée, telle que la modification du type d'un champ ou l'exécution d'une instruction SQL complexe qui modifie de nombreux enregistrements.

Pour utiliser le module pour faire une sauvegarde, les étapes à suivre sont :

  1. Sur la page principale, cliquez sur l'icône de la base de données que vous souhaitez sauvegarder.
  2. Cliquez sur Sauvegarder la base de données sous la liste des tables. Cela vous mènera à un formulaire pour entrer la destination de sauvegarde et les options.
  3. Dans la Sauvegarde vers un fichier , saisissez le chemin d'accès complet au fichier dans lequel la sauvegarde doit être écrite, par exemple /tmp/backup.sql . Si le fichier existe déjà, il sera écrasé.
  4. Pour limiter la sauvegarde à certains enregistrements uniquement, désélectionnez l'option All rows' pour le champ *Only backup rows matching where clause* et saisissez une clause SQL WHERE dans le champ adjacent, par exemple toto ='bar . Cela ne fonctionne que si la clause est valide pour toutes les tables de la base de données, donc dans l'exemple, toutes les tables doivent avoir un foo domaine.
  5. Si l'option Ajouter des instructions de suppression de table à la sauvegarde ? le champ est défini sur Oui , la sauvegarde inclura des instructions SQL pour supprimer les tables existantes du même nom lors de la restauration. Cela signifie que si vous le restaurez sur un autre système, les données de ces tables seront remplacées par les nouvelles données de la sauvegarde. Si Non est sélectionné, les données restaurées seront ajoutées à celles qui existent déjà. Le meilleur choix dépend vraiment de ce que vous essayez de faire. Pour une sauvegarde normale, vous devez sélectionner Oui afin que toutes les données corrompues ou en conflit soient supprimées lors de la restauration de la sauvegarde. Cependant, si vous transférez des enregistrements vers un autre système ou une autre base de données Non doit être sélectionné à la place afin que les enregistrements existants dans la table cible ne soient pas perdus.
  6. Pour effectuer la sauvegarde, cliquez sur Sauvegarder maintenant bouton en bas du formulaire, et la page montrant son succès ou son échec sera affichée.

Les fichiers de sauvegarde MySQL ne sont en fait que des listes d'instructions SQL CREATE TABLE et INSERT qui, lorsqu'elles sont exécutées, restaurent la base de données dans l'état dans lequel elle se trouvait au moment de la sauvegarde. Bien que cela utilise plus d'espace disque qu'un format binaire plus compressé, cela vous permet de visualiser et de modifier facilement le fichier si vous le souhaitez. Cela signifie également qu'un fichier de sauvegarde peut être utilisé sur un système avec une architecture différente, car le fichier ne contient que du texte ASCII.

Si vous avez une base de données qui est utilisée à des fins de production importantes, elle doit être sauvegardée régulièrement, par exemple une fois par jour. Au lieu de suivre les instructions ci-dessus tous les jours, vous pouvez utiliser le module Scheduled Cron Jobs (traité au chapitre 10) pour créer une tâche qui effectue la sauvegarde pour vous. Pour savoir quelle commande exécuter, utilisez les instructions ci-dessus pour effectuer d'abord une sauvegarde, puis visitez le module Webmin Actions Log (traité au chapitre 54) pour voir la commande utilisée.

Une fois qu'un fichier de sauvegarde a été créé, il peut être restauré sur le même système ou sur un autre serveur exécutant MySQL. En fonction de ce que le Ajouter des instructions de suppression de table à sauvegarder ? a été défini sur au moment de la sauvegarde, le contenu de toutes les tables existantes portant les mêmes noms que ceux de la sauvegarde peut être supprimé. Par conséquent, vous ne devez généralement restaurer que si les tables n'existent pas ou contiennent des données obsolètes ou non valides que vous souhaitez écraser.

Étant donné qu'un fichier de sauvegarde n'est qu'une liste d'instructions SQL, le processus de restauration implique simplement l'exécution de toutes les commandes du fichier. Cela signifie que vous pouvez également suivre ces mêmes étapes pour exécuter un fichier de vos propres commandes :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données dans laquelle la sauvegarde doit être restaurée.
  2. Cliquez sur Exécuter SQL et faites défiler jusqu'à la section *Sélectionner le fichier de commandes SQL à exécuter sur la base de données*.
  3. Si le fichier de sauvegarde se trouve sur le système exécutant MySQL et Webmin, choisissez À partir du fichier local option et entrez le chemin d'accès complet au fichier dans le champ de texte adjacent. Si la sauvegarde se trouve sur le PC sur lequel votre navigateur s'exécute, choisissez *À partir du fichier téléchargé* et utilisez le bouton Parcourir bouton pour sélectionner le fichier de sauvegarde.
  4. Cliquez sur Exécuter bouton pour restaurer la sauvegarde ou exécuter les commandes SQL dans le fichier. Une page répertoriant toutes les sorties de MySQL au fur et à mesure de l'exécution s'affichera. En général, il n'y en aura pas à moins qu'une erreur ne se produise ou que le fichier ne contienne des instructions SELECT.

Gestion des utilisateurs MySQL

Autorisations utilisateur MySQL

Votre serveur de base de données MySQL exige que tous les clients s'authentifient avec un nom d'utilisateur et un mot de passe avant de pouvoir exécuter des commandes SQL. Il possède ses propres tableaux d'utilisateurs, de mots de passe et de permissions qui sont consultés lorsqu'un client essaie de se connecter, plutôt que les fichiers utilisateur Unix /etc/passwd et /etc/shadow. Des autorisations détaillées peuvent être définies pour chaque utilisateur, afin de limiter les types d'instructions SQL qu'il peut utiliser, les hôtes clients à partir desquels il peut se connecter et les bases de données, tables et champs qu'il peut modifier.

Généralement, après la première installation de MySQL, seul l'utilisateur root peut se connecter. Cet utilisateur sera autorisé à accéder à toutes les bases de données et tables et à effectuer toutes les actions. Il est donc généralement utilisé à des fins d'administration uniquement. Si vous voulez écrire une application qui utilise une base de données, c'est une bonne idée de créer un autre utilisateur à cette fin et de configurer l'application pour qu'elle se connecte sous cet utilisateur.

L'installation standard de MySQL crée également un Anonyme utilisateur sans mot de passe et accès aux bases de données à partir de test. Cet utilisateur spécial est utilisé pour toute tentative de connexion pour laquelle aucun autre utilisateur correspondant n'est trouvé. Les utilisateurs anonymes sont expliqués plus en détail ci-dessous.

Créer un utilisateur

Pour ajouter un utilisateur, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur Autorisations utilisateur icône. Cela vous amènera à une page répertoriant les utilisateurs existants, comme indiqué dans la capture d'écran ci-dessous.
  2. Cliquez sur le lien Créer un nouvel utilisateur au-dessus ou au-dessous du tableau pour accéder au formulaire de création d'utilisateur.
  3. Dans le Nom d'utilisateur champ, sélectionnez le deuxième bouton radio et entrez un nom pour cet utilisateur. Même s'il est possible de créer plusieurs entrées utilisateur avec le même nom comme expliqué plus loin, cette nouvelle doit être unique.
  4. En supposant que vous souhaitiez que l'utilisateur ait un mot de passe, modifiez le Mot de passe champ à Définir sur et entrez-le dans le champ adjacent. Si vous choisissez Aucun , aucun mot de passe ne doit être fourni et les tentatives de connexion avec un mot de passe seront rejetées.
  5. Pour autoriser cet utilisateur à se connecter uniquement à partir d'un hôte spécifique, sélectionnez le deuxième bouton radio dans les Hôtes champ et entrez un nom d'hôte dans la zone de texte. Le nom d'hôte doit être le même que celui renvoyé par une recherche inversée de l'adresse IP du client, qui sera presque toujours un nom d'hôte complet comme pc.example.com au lieu de simplement serveur . Vous pouvez saisir une adresse IP à la place, ou un nom d'hôte ou un modèle SQL d'adresse IP comme %.example.com . Pour autoriser un utilisateur à se connecter uniquement à partir du même système que celui sur lequel le serveur de base de données s'exécute, saisissez localhost en tant qu'hôte. Si Tout est sélectionné, cet utilisateur pourra se connecter depuis n'importe quel hôte. Soyez prudent lors de la création d'un utilisateur qui a un hôte spécifié - s'il essaie de se connecter depuis un autre endroit et qu'un utilisateur anonyme existe avec un hôte correspondant, il sera connecté en tant qu'utilisateur anonyme à la place !
  6. Dans les Autorisations liste, sélectionnez les entrées pour les actions que vous souhaitez que l'utilisateur puisse effectuer. For an application user, being able to select, insert, update and delete records is usually enough. Un-trusted users should never be given permissions beyond Drop tables , as that would allow him to harm the database, access arbitrary files or enhance his own permissions. If a user does not have any permissions at all, he will be unable to connect unless some have been granted for a specific database or host (as explained in the next section).
  7. To create the user, click the Save bouton en bas de la page. The new MySQL login will be usable immediately, and will have access to all databases and tables with the permissions specified in step 6. See the next section in this chapter for information on how to restrict a user to only certain databases or tables.

When a client tries to login, MySQL searches for the first matching user and host in the list of users. The server always checks entries with specific hostnames before those that allow any host, and Anonymous user entries before those for a specific user. This means that a user may end up with the Anonymous permissions even though he is in the user list with greater privileges. Due to the confusion this can cause, I recommend deleting all anonymous user entries unless you fully understand their effects.

It is possible and even useful to have multiple entries for the same user in the list, as long as they have different hostnames. For example, if you want to allow the user fred to login from only clients server.example.com and www.foo.com , you would need to create two entries from fred with the Host field set differently. The should have the same password and permissions though, unless you want to require a different password or grant different permissions depending on the host the user is connecting from.

New and existing users can be edited by clicking on their names in the list, which brings up an editing form almost identical to the one used for creating a user. The only different is that the Password field has a Don't change option which is selected if the user has a password, and which tells Webmin to leave the password unchanged when the user is saved. After making changes, click the Save button at the bottom of the form to update the user in the database. Or to delete it, hit the Delete bouton. If there are multiple entries for the same user, you will have to update them all individually if changing the password or permissions.

Unless you have already created another administration user with full privileges, the root user should not be deleted. Because this Webmin module normally logs in a root itself, modifying or removing this user may force you to login to MySQL again as explained in the introduction to the module earlier in the chapter. By deleting the root user or removing its privileges, it is possible to deny yourself access to the database, which can only be fixed using command-line programs like mysqladmin.

Like many other modules, the MySQL Database Server module can be configured to automatically create, update or delete a MySQL user when the same thing happens to a corresponding Unix user. This can be useful if you allow some of the Unix users on your system to access databases, and want to keep their passwords and usernames synchronized.

To set up synchronization, the steps to follow are:

  1. On the module's main page, click on the User Permissions icône. Scroll down to the form below the list of existing MySQL users.
  2. If you want a new MySQL user to be created for each new Unix user, check the Add a new MySQL user when a Unix user is added boîte. Then select the permissions that should be granted to the user from the list to the right. When a MySQL user is automatically added, its will be allowed to login from any host.
  3. If you want MySQL users to be renamed or have their passwords changed when the same thing happens to matching Unix users, check the *Update a MySQL user when the matching Unix user is modified* box. If more than one entry exists for the same user, they will all be effected.
  4. To have a MySQL user deleted at the same time as the Unix user of the same name, check the *Delete a MySQL user when the matching Unix user is deleted* box. If more than one entry exists for the same user, they will all be deleted.
  5. Cliquez sur Enregistrer button to make the new synchronization settings active.

Managing database, host, table and field permissions

Users created by following the instructions in the previous section have access to all databases on the server with the same permissions. However, it is possible to give a user access to only specific databases by following the steps below:

  1. Make sure the user does not have any permissions on the User Permissions page. Any that he has set here will apply to all databases, which is not what you want.
  2. On the module's main page, click on the Database Permissions icône. This will bring up a list of users and the privileges they have for specific databases.
  3. Click on the Create new database permissions link above or below the list.
  4. In the form that appears, the Databases field controls which databases he will have access to. You can either select the Any radio button to grant permissions for all databases, select the second radio button to grant access to the database selected from the menu, or choose the final button to grant access to databases whose names match the SQL pattern entered into the adjacent field. Typically the second option is the one that you want to select, so that you can grant access to a single database. If the user should have access to more than one, you will need to add multiple database permissions entries.
  5. In the Username field, select the second radio button and enter the name of the MySQL user to whom access should be granted.
  6. The Hosts field allows you to choose which client host(s) the user will be able to connect to the database from. You should normally select Any , which gives him access from anywhere - unless the user himself is prevented from connecting from some hosts, explained in the Managing MySQL users section .
  7. From the Permissions list, select the privileges that the user should have for the chosen database. These will be added to any that are set for the user on the User Permissions page.
  8. Cliquez sur Enregistrer button to add and activate the new permissions. You will be returned to the database permissions list.

You can edit database permissions by clicking on a database name from the list. This will take you to an editing form identical to the creation form in which the database, username, hosts or permissions can be changed. The Save button saves and activates any changes, while the Delete button removes the permissions from the database.

When MySQL is first installed, database permissions for the Anonymous user in the test and test_% databases will be created automatically. Assuming the Anonymous user exists in the User Permissions page, these give anyone who can connect to MySQL access to records in those databases. Unless you are making use of anonymous logins, these database permissions can be safely deleted.

MySQL also allows permissions to be granted on databases to all users connecting from certain client hosts. This can be useful if you want to increase the privileges that a particular client system has, such as a web server connecting to your database server. To add host permissions, the steps to follow are:

  1. On the module's main page, click on the Host Permissions icône. This will take you to a page listing existing permissions granted to client hosts, if any. When MySQL is installed, no permissions of this type are initially defined.
  2. Click on the Create new host permissions to bring up a form for adding a new host permissions entry.
  3. If the permissions should apply to all databases, select the Any radio button in the Databases domaine. If they are for only a specific database, select the second radio button and choose a database from the menu next to it. If you want to grant permissions to databases whose names match an SQL pattern, select the final radio button and enter the pattern into the adjacent text field.
  4. In the Hosts field, select the second radio button and enter a hostname, IP address or hostname or IP pattern (like %.example.com or 192.168.1.% ) into the field next to it. Selecting the Any button isn't particularly useful.
  5. From the Permissions menu, choose those privileges that will be granted to all users connecting to the chosen database from the specified host. These will be added to any other permissions that are granted on the User Permissions or Database Permissions pages.
  6. Cliquez sur Enregistrer button to activate the new client host permissions.

As usual, you can edit existing an host permissions entry by clicking on the database name from the list, editing fields and clicking Save . Or you can remove it with the Delete bouton.

MySQL also supports the granting of permissions to specific tables and fields to users connecting from certain hosts. Webmin allows you to set these up by clicking on the Table Permissions and Field Permissions icons on the main page. However, as they are quite complex and rarely used, they are not covered in this chapter.

Module access control

Normally a Webmin user who has access to the MySQL Database Server module can manage all databases and use all of the module's features. However, as WebminUsers explains it is possible to restrict what a user can do with a module. In this case, you can grant access to only certain databases, control the directory that backups can be written to, and restrict the creation and deletion of databases. This can be useful if various databases on your server are owned by different people, and you want to give each of them a Webmin login to manage only those that belong to them.

To set up this kind of module access control, the steps to follow are:

  1. In the Webmin Users module, click on MySQL Database Server next to the name of a user or group who has access to the module.
  2. On the access control form, change the Can edit module configuration? champ sur Non . This is necessary to prevent the user changing the programs that the module uses for accessing the database.
  3. In the Databases this user can manage field, choose the Selected option. Then select the databases he should have access to from the list below.
  4. Change the Can create new databases? champ sur Non . There is no reason that a restricted user of this type should be able to add new databases.
  5. Unless you want the user to be able to delete his own databases, change the Can drop databases? champ sur Non . Leaving it set to Yes is harmless though, as he will only be able to delete those that you have granted him access to.
  6. Change the Can stop and start MySQL server? champ sur Non .
  7. If you want this Webmin user to be able to control access by MySQL users to his databases, change the Can edit permissions? field to Only for managed databases . This will give him access to the Database, Host, Table and Field Permissions pages, but limit him to viewing and editing entries for the databases he is granted access to. To deny access to MySQL permission management altogether, select No Au lieu. Choosing Yes is a bad idea, as it would allow the user to create MySQL users with access to all databases on the server.
  8. If the Can edit table data? field is set to No , the user will not be able to create tables, edit fields, run SQL commands or make backups. Instead, he will only be able to use the module's record viewing and editing feature.
  9. When the Login to MySQL as field is set to *Username from Module Config*, all database actions performed by this user will be done as the MySQL user set in the module configuration, typically root. However, you may want the Webmin user to login as a less-privileged MySQL user as an additional security precaution. This way, even if the user finds a way to defeat the module's restrictions he will still not be able to execute SQL commands as root. To use a different login, select the Username option and enter a valid MySQL login and password into the adjacent fields. This alternate user must have the privileges to perform everything that the module needs to do though, such as creating tables and possibly granting permissions.
  10. Normally Webmin runs the mysqldump command to make backups as the root Unix user, and allows the backup file to be created anywhere on your system. Because this may allow important files to be overwritten, you should change the *Backup file directory* field to a safe directory for creating backups in, such as /home/someuser/backup . Better still, the Write backup as Unix user field should be changed to a user other than root, such as the Webmin user's Unix login. The mysqldump command will be run as this user instead, which prevents it from being used to overwrite files.
  11. Finally, to make the new access control restrictions active, click Save .

If you want to give a large number of users access to MySQL though a web interface, an alternative to configuring the Webmin module for each user is to install Usermin. It has a MySQL module with an identical interface, and can be easily configured to limit which databases are visible. See chapter 47 for more information.

Module Configuration

Module Configuration

Like many other modules, this one has several options that you can set by clicking on the Module Config link in the top-left corner of the main page. Those fields listed under *Configurable option* relate to the module's user interface and the method it uses to connect to the database, while those under *System configuration* define the paths to the MySQL programs and files.

Unless you have installed the database server in a different directory to the default for your operating system, fields in the second section do not generally need to be changed. This can happen if you installed MySQL from the source code instead of using the package supplied with your Linux distribution, or if you have two copies of MySQL installed and are configuring a clone of the module (covered in Webmin Configuration) to manage the second install.

If you have multiple copies of MySQL installed on your system, you should clone this module once for each server. The last three configuration options can then be customised to connect to each of the MySQL installs, which will probably be listening on different ports or use different socket files.


Webmin
  1. FAQ sur le déploiement de MySQL

  2. Installer MySQL Server 5.6 dans CentOS

  3. Optimiser la base de données MySQL

  4. Comment installer le serveur de base de données MySQL 8 sur CentOS 8

  5. Comment configurer une base de données esclave MySQL

Liste des tables dans une base de données MySQL

Comment autoriser l'accès à distance au serveur de base de données MySQL

Comment créer une base de données dans MySQL

Présentation de MySQL

Importer une base de données MySQL

Importer une base de données dans une instance MySQL locale