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 :

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 :

Avec >=-10.1.18, utilisez:

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 :

nom_de_table est le nom de la table que vous voulez créer. Dans notre cas créez une table nommée. Cette table contiendra le nom des développeurs, leur adresse de courriel et leur travail.

nom_de_champ contiendra le nom du champ. Nous avons 3 noms requis dans ce cas : nom, courriel et travail. En plus, un champ  (clef primaire) est défini pour utiliser facilement des relations avec d'autre tables et s'auto-incrémentera à chaque insertion de donnée. La clef primaire est vivement recommandée mais n'est pas nécessaire car MySQL en garde une en interne. Les indexes, dont la clef primaire appartient, permet un accès plus rapide aux données à mesure que les tables grandissent.

Le field_data_type est le type d'information qui sera stocké. Les différents formats disponibles peuvent être trouvés sur MySQL Column Types Page. Pour notre objectif, nous utiliserons le type de données  pour tous nos champs et   pour le champ de clef primaire. est l'un des types de données les plus simples dès lors qu'il s'agit de travailler avec des chaînes de caractères.

size représente la quantité de données qu'un simple champ contiendra. Dans ce cas, nous utiliserons 128. Ceci signifie que le champ peut avoir une donnée  de 128 octets. Vous pouvez sans crainte considérer cela comme 128 caractères pour le moment, bien qu'il y ait une explication quelque peu plus technique que le site mentionné ci-dessus vous fournira. Maintenant que nous savons comment nous allons créer la table, allons-y :

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 :

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. Pour les colonnes auto-incrémentées, la valeur NULL va utiliser la prochaine valeur disponible. 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 :

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

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.

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.

Privilèges MySQL
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. Pour l'instant, 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).

Création des utilisateurs
La requête SQL CREATE USER va créer un utilisateur et définir un moyen d'authentification, souvent par mot de passe mais d'autre moyens peuvent être disponibles.

Un exemple de commande CREATE USER est:

utilisateur est le nom de l'utilisateur et host est le nom d'hote à partir duquel l'utilisateur a le droit d'accéder. Dans la plupart des cas ce sera localhost (la machine locale). Pour créer les utilisateurs de notre exemple:

(admin)

(guest)

Accorder des privilèges avec la commande GRANT
Let's have a closer look at this somewhat simplified format of the GRANT command.

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

Pour notre utilisateur administrateur, ALL fera l'affaire. Pour l'utilisateur invité, conviendra pour un accès en lecture seule. database est la base de données sur laquelle nous voulons octroyer des privilèges à l'utilisateur. Dans cet exemple, la base de donnée est gentoo. Le .* signifie toutes les tables. Si vous le désirez vous pouvez octroyer des droits par table. user est le nom de l'utilisateur et host est le nom de l'hôte à partir duquel l'utilisateur accède à la base. Dans la plupart des cas, il s'agit de localhost. Pour finir, password est le mot de passe de l'utilisateur. Tenant compte de tout cela, avançons et créons nos utilisateurs. .

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.

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.

DROP USER will delete the record in the user table and all privilege tables. Let's go ahead and do that:

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.

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.