MySQL/Startup Guide/fr

Ce document vous assiste dans la configuration et l'utilisation de MySQL.

Fondamentaux
MySQL est un serveur de bases de données utilisé dans des applications variées. SQL signifie (S)tructured (Q)uery (L)anguage (Langage de requêtes structuré), langage que MySQL utilise pour communiquer avec d'autres programmes. Par dessus tout cela, MySQL possède ses propres fonctions SQL étendues pour offrir à l'utilisateur des fonctionnalités additionnelles. Dans ce document, nous allons voir comment procéder à l'installation initiale de MySQL, configurer des bases de données et des tables puis créer de nouveaux utilisateurs. Commençons par l'installation.

Installation de MySQL
Assurez-vous d'abord que MySQL est installé sur votre système. Dans le cas où vous auriez besoin de fonctionnalités spécifiques de MySQL, vérifiez que vous avez activé les options requises de la variable USE qui vous permettent de peaufiner votre installation.

À la fin de l'installation vous recevrez la notification suivante :

MySQL einfo message

Comme il s'agit d'une nouvelle installation, exécutez la commande. Vous devez presser la touche  lorsque vous y êtes invité durant la configuration de la base de données MySQL. La configuration met en place la base de données MySQL principale qui contient les informations administratives telles que les bases de données, les tables, les utilisateurs, les droits et plus encore. La configuration vous recommande de changer le mot de passe root dès que possible. Vous devez absolument le faire, sinon quelqu'un pourrait arriver par hasard et hacker la configuration de votre serveur MySQL.

Quelques informations MySQL, non spécifiques à l'ebuild, ont été retirées de manière à conserver autant de cohérence que possible dans ce document.

Le script de configuration a déjà imprimé les commandes dont vous avez besoin pour définir votre mot de passe. Exécutez les.

Si vous utilisez OpenRC lancez cette commande :

Si vous utilisez systemd lancez cette commande à la place :

Après cela définissez le mot de passe de root :

Vous pouvez désormais tester votre mot de passe root en essayant de vous connecter au serveur MySQL :

L'option  définit le nom de l'utilisateur qui désire se connecter. L'option  définit l'hôte. C'est en général  sauf si vous êtes en train de configurer un serveur distant. Pour finir, l'option  informe le client  mysql que vous aller saisir le mot de passe d'accès à la base de données. Notez l'apparition de l'invite de commande. C'est dans ce contexte que vous saisissez toutes les commandes mysql. Maintenant que vous avez l'invite de commande mysql en tant que root, vous pouvez commencer à configurer votre base de données.

Créer une base de données
Vous vous êtes connecté et vous disposez d'une invite de commande mysql. Commençons par regarder les bases de données dont vous disposez. Pour cela, utilisez la commande.

Bien qu'une base de données de test soit déjà créée, nous allons créer la notre. Les bases de données sont créées en utilisant la commande. Nous allons en créer une appelée gentoo.

La réponse nous fait savoir que la commande a été exécutée sans erreur. Dans ce cas, une ligne a été modifiée. Ceci se réfère à la base de données principale, qui contient la liste de toutes les bases de données. Vous n'avez pas à trop vous préoccuper des détails d'arrière-plan. Le dernier nombre indique combien de temps l'exécution de le requête a nécessité. Vous pouvez vérifier que la base de données a été créée en exécutant la commande  à nouveau.

Votre base de données a bien été créée. Afin de commencer à créer des tables dans votre nouvelle base gentoo, vous devez la sélectionner comme base de données courante en utilisant la commande. La commande  prend comme argument le nom de la base de données que vous voulez utiliser comme base de données courante. Une autre possibilité est de la définir dans les commandes avec l'option. Définissez maintenant votre base de données courante.

La base de données courante est maintenant votre base de données gentoo fraîchement créée. Maintenant que vous l'utilisez, vous pouvez commencer à créer des tables et y placer des informations.

Créer une table
Dans la structure de MySQL, il y a les bases de données, les tables, les enregistrements et les champs. Les bases de données contiennent les tables, les tables contiennent les enregistrements et les enregistrements contiennent les champs qui contiennent, pour leur part, les informations réelles. Cette structure permet aux utilisateurs de préciser comment ils veulent accéder à leurs données. Jusqu'à maintenant vous avez manipulé des bases de données, passez maintenant aux tables. Tout d'abord, les tables peuvent être listées comme les bases de données avec la commande. Actuellement, il n'y a pas de table dans la base gentoo, et la sortie de la commande indique :

Ceci signifie qu'il faut créer quelques tables. Pour cela utilisez la commande. Cette commande est très différente de la commande  en ce sens qu'elle demande une liste d'arguments. Elle a la forme suivante :

CREATE TABLE Syntax

table_name is the name of the table we wish to create. In this case, let's make a table named. This table will contain the developer's name, email and job.

field_name will contain the name of the field. We have 3 required names in this case: name, email, and job.

The field_data_type is what type of information will be stored. The different formats available can be found at the MySQL Column Types Page. For our purposes, we'll use the  data type for all of our fields. is one of the simplest of data types when it comes to working with strings.

size is how much of data a single field will store. In this case, we'll use 128. This means that the field can have  data that is 128 bytes. You can safely think of this as 128 characters for the time being, though there is a somewhat more technical explanation that the above site will provide you with. Now that we know how we are going to create the table, let's do it.

Il semble que votre table ait bien été créée. Vérifions cela avec la commande  :

Bien ! Notre table est là ! Néanmoins, elle ne semble pas contenir la moindre information sur les types de champs que nous avons définis. Pour cela, utilisez la commande  (ou   en forme raccourcie), qui prend le nom de la table en argument. Regardons à quoi cela ressemble avec notre table développeurs.

Ceci montre les différents champs et leur type ainsi que quelques attributs supplémentaires qui sont au delà du champ de ce document. Reportez-vous au Manuel de référence de MySQL pour une information plus complète. Vous disposez maintenant d'une table avec laquelle travailler. Nous allons la remplir.

Remplir la base de données MySQL
Nous remplissons une table (ou y ajoutons des données) avec la commande. Comme la commande, elle utilise un format spécifique :

INSERT Syntax

Cette commande est utilisée pour insérer un enregistrement dans une table. table contient le nom de la table dans laquelle nous désirons entrer des informations. Le nom de la table peut être suivi par une liste des colonnes dans lesquelles nous voulons insérer des données et  contiennent les valeurs à insérer dans la table. Vous pouvez ne pas fournir la liste des colonnes si vous écrivez dans toutes les colonnes et que si vous fournissez les valeurs dans l'ordre dans lequel vous avez défini les colonnes. Dans ce cas, nous voulons insérer des données dans la table développeurs. Insérons un enregistrement :

Si on se réfère au résultat retourné, il apparaît que l'enregistrement a été correctement inséré. Mais comment faire pour insérer plus qu'un seul enregistrement ? C'est là que la commande  entre en scène. Elle charge les enregistrements depuis un fichier. Essayons en éditant un tel fichier dans notre répertoire home. Nous appellerons ce fichier. En voici un échantillon :

~/records.txt

La commande  a une définition beaucoup plus longue, mais nous utiliserons ici une forme simplifiée.

LOAD DATA Syntax

représente le chemin et le nom du fichier à charger. table est le nom de la table concernée. Dans ce cas, le fichier est et la table est  développeurs.

Ça a marché ! Cependant, ceci insère seulement des enregistrements et ne vous donne aucun contrôle sur MySQL. Beaucoup d'applications du Web utilisent des scripts sql afin de configurer MySQL rapidement et facilement. Si vous voulez utiliser un script sql, vous devez lancer mysql en mode batch, ou « sourcer » le fichier. Voici un exemple où mysql est utilisé en mode batch :

Comme avec , vous devez savoir précisément ce que   contient. Dans le cas contraire votre base peut être compromise ! Une autre façon de faire la même chose consiste à utiliser la commande. Cette commande exécutera les commandes mysql trouvées dans un fichier sql tout en étant en mode mysql interactif. Voici comment « sourcer » un fichier sql :

Si vous rencontrez une application Web vous demandant d'exécuter un fichier sql, les deux commandes vues ci-dessus peuvent être utilisées pour le faire. Nous avons configuré notre table, mais comment vérifier nos champs ? Nous pouvons le faire en exécutant des requêtes de recherche sur la table.

Parcourir une table MySQL avec des requêtes
Les requêtes sont l'une des fonctionnalités principales de toute base SQL. Elles permettent de transformer les données dans les tables en quelque chose d'utile. La plupart des requêtes sont faites avec la commande. La commande   est très complexe, et nous allons nous limiter à trois formes principales de cette commande dans ce document.

SELECT forms

Jetons un coup d'œil rapide à la première forme. Elle est relativement simple et retourne une vue d'ensemble de la table. Nous allons avancer et la lancer pour voir de quelles données nous disposons jusqu'à maintenant.

Nous pouvons voir à la fois les données que nous avons insérées via   et celles que nous avons insérées via. Maintenant, supposons que nous ne voulions voir que l'enregistrement par Chris White. Nous pouvons le faire en utilisant la deuxième forme de. Comme ceci :

Comme attendu, l'entrée spécifique que nous cherchons a été sélectionnée et est affichée. Maintenant, supposons que nous ne voulions voir que le travail et le courriel des personnes et pas leur nom. Nous pouvons pour cela utiliser la troisième forme de  comme ceci :

Cette méthode de sélection est beaucoup plus facile à gérer, en particulier avec une grande quantité d'informations, comme nous allons le voir. Tout de suite, étant utilisateur root de mysql, nous avons des droits illimités pour faire tout ce que nous voulons dans la base MySQL. Dans un environnement de serveur, un utilisateur avec de tels privilèges peut être source de gros problèmes. Afin de définir qui fait quoi dans la base, nous devons définir les privilèges.

Accorder des privilèges avec la commande GRANT
Les privilèges définissent le type d'accès que les utilisateurs ont sur les bases de données, les tables,etc., en fait sur presque tout. Tout de suite, le compte root de MySQL est le seul à pouvoir accéder à notre base de données gentoo. Créons maintenant deux utilisateurs génériques, invité et administrateur, qui recevront des droits d'accès à la base gentoo pour travailler avec ses données. Le compte invité sera un compte restreint. Tout ce qu'il pourra faire sera d'obtenir des informations de la base, rien d'autre. Le compte administrateur aura les mêmes privilèges que root, mais uniquement pour la base gentoo (pas pour les bases MySQL principales). Avant de nous lancer, regardons de plus près au format de la commande.

GRANT Syntax

Tout d'abord, il y a les privilèges que nous voulons donner. Avec ce que nous avons appris jusqu'à maintenant, voici quelques privilèges que nous pouvons accorder :


 * -Donne tous les privilèges sur la base de données
 * - Autorise l'utilisateur à créer des tables
 * - Autorise l'utilisateur à interroger les tables
 * - Autorise l'utilisateur à insérer des données dans la table
 * - Autorise l'utilisateur à voir la liste des tables
 * - L'utilisateur n'a aucun privilège
 * - Autorise l'utilisateur à octroyer des privilèges

For our admin user, ALL will do. For the guest user,  will be sufficient for read only access. database is the database we wish the user to have these permissions on. In this example, gentoo is the database. The .* means all tables. If you wanted to, you could apply per table access. user is the name of the user and host is the hostname the user will be accessing from. In most cases, this will be localhost. Finally, password is the user's password. Given the information, let's go ahead and create our users.

Maintenant que nos utilisateurs sont définis, testons les. Tout d'abord il nous faut quitter MySQL en tapant   à l'invite de commande :

Nous sommes de retour sur la console. Maintenant que nos utilisateurs sont définis, avançons et regardons ce qu'ils peuvent faire.

Vérifier les autorisations de l'utilisateur
Nous allons essayer de nous connecter en tant qu'utilisateur invité. À cet instant, l'utilisateur invité a seulement les privilèges. Ce qui l'autorise seulement à interroger la base, rien d'autre. Allons-y, connectons-nous !

Maintenant nous devrions tester les restrictions de l'utilisateur. Commutons sur la base gentoo :

Maintenant essayons de faire quelque chose que nous ne sommes pas supposé faire. Essayons de créer une table.

Comme vous pouvez le constater, cette fonction échoue, car notre utilisateur n'a pas les droits appropriés. Cependant, un accès permis est la commande. Essayons-la :

La commande réussit, et nous avons un aperçu de ce que les autorisations utilisateur peuvent faire. Nous avons cependant créé un compte administrateur également. Ceci cherche à montrer que même les utilisateurs recevant les autorisations 'All' sont limités. Avançons, quittons MySQL et reconnectons-nous en tant qu'utilisateur administrateur.

Pour commencer nous allons créer une nouvelle base de données en tant qu'utilisateur administrateur. Cet utilisateur administrateur aura un accès similaire à celui du compte root de MySQL, et sera capable de faire toute sorte de modifications de son choix sur la base de données gentoo. Ceci permettra de tester l'accès de l'utilisateur à la base principale MySQL. Rappelez-vous que nous avons seulement défini les autorisations pour une base de données spécifique.

En effet l'utilisateur administrateur ne peut pas créer de base de données sur la base MySQL principale., malgré les autorisations ALL sur la base gentoo. Néanmoins, nous pouvons utiliser le compte administrateur pour modifier la base de données gentoo, comme l'illustre l'exemple d'insertion de données qui suit.

L'utilisateur administrateur peut accéder à la base de données comme il l'entend. Maintenant, quelques fois, nous avons besoin de retirer des autorisations à un utilisateur. La raison peut être qu'il s'agit d'un utilisateur à problèmes ou d'un employé retraité. Regardons comment désactiver les autorisations d'un utilisateur avec la commande.

Retirer des droits à un utilisateur avec la commande REVOKE
La commande  nous permet de retirer des droits d'accès à un utilisateur. Nous pouvons, soit lui retirer tout droit d'accès, soit lui retirer un droit d'accès spécifique. En fait, le format est très semblable à celui de la commande.

REVOKE Syntax

Les options sont les mêmes que pour la commande a. Ici cependant, nous allons retirer tous les droits d'accès à un utilisateur. Supposons que le compte invité crée des problèmes de sécurité. Nous décidons de lui retirer tous ses privilèges. Nous nous connectons en tant que root pour faire :

Maintenant quittons et essayons de nous reconnecter en tant qu'utilisateur invité.

Bien que nous parvenions à nous connecter, notre accès à gentoo est désormais révoqué.

Ainsi, notre utilisateur à problèmes ne peut plus accéder à la base gentoo. Notez que l'utilisateur peut encore se connecter. C'est parce qu'il est resté dans la base de données principale de MySQL. Regardons maintenant comment supprimer définitivement un compte dans la base principale. Pour cela nous utilisons la commande   et la table user de MySQL.

Supprimer un compte avec DELETE
La table user de MySQL est une liste de tous les utilisateurs avec des informations les concernant. Assurez-vous d'être connecté en tant que root. Ensuite utilisez la base principale de MySQL.

Maintenant regardons quelles bases de données sont listées dans la base mysql :

La table user est la table qui nous intéresse. Cependant, la table user contient 30 champs différents, la rendant difficile à lire. Afin de faciliter la lecture, nous allons utiliser la version 3 de la commande. Les champs qui nous intéressent sont Host et User.

Maintenant que nous disposon de l'information, nous pouvons supprimer l'utilisateur invité. Nous utilisons pour cela la commande   dont la syntaxe est donnée ci-dessous :

Syntaxe de la commande DELETE

Vous noterez que le format de la commande   ressemble à celui de la commande. Dans ce cas, le champ sera User et sa valeur invité. Cela effacera l'enregistrement dans la table user pour lequel le nom d'utilisateur est invité.

Tout semble avoir fonctionné. Testons en nous déconnectant et tentant de nous reconnecter en tant qu'utilisateur invité.

Notre utilisateur a bien été effacé !

Conclusion
Bien que ce guide se focalise essentiellement sur la configuration de MySQL en ligne de commande, il existe quelques alternatives graphiques :


 * phpMyAdmin - Outil en php pour l'administration de MySQL.
 * mysqlnavigator - frontal QT pour MySQL.
 * gmyclient - Un client MySQL basé sur GNOME.
 * knoda - Un client MySQL dans KDE.

Ceci achève le tutoriel d'introduction à MySQL. J'espère qu'il vous aura permis une meilleure compréhension des fondamentaux de MySQL et appris comment configurer une base de données.

Remerciements
Nous tenons à remercier les auteurs et éditeurs suivants pour leur contribution à ce guide :


 * Chris White
 * Shyam Mani
 * Xavier Neys
 * José Fournier (traduction)