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.

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

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 est le nom des champ. Dans notre exemple, il nous faut trois noms : nom, courriel et travail. L'argument type_de_données_du_champ représente le type d'information qui sera stocké. Les différents formats valides peuvent être trouvés sur les pages Types de colonnes de MySQL. Pour nos besoins, nous utiliserons le type de données  pour tous les champs. est l'un des types de données les plus simples pour travailler avec des chaînes de caractères.taille  représente le quantité de données un simple champ contiendra. Dans notre cas nous utiliserons  128. Ceci signifie que le champ peut contenir jusqu'à 128 octets. Vous pouvez vous les figurer sans crainte 128 caractères pour le moment, bien qu'il existe une information plus technique que le site cité ci-dessus puisse vous fournir. Maintenant créez la table.

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'application 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ée 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

First we have the privileges we wish to assign. With what we've learned so far, here are some of the privileges you can set:


 * - Gives the all privilege control for the database
 * - Allows users to create tables
 * - Allows users to query tables
 * - Allows users to insert data into a table
 * - Allows users to see a list of databases
 * - User has no privileges
 * - Allows users to grant privileges

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.

Now that we have the users setup, let's test them out. First we quit mysql by typing  at the command prompt:

We're now back at the console. Now that we have our users setup, let's go ahead and see what they can do.

Testing User Permissions
We shall now attempt to login as the guest user. Currently, the guest user has  only privileges. This basically comes down to being able to search and nothing more. Go ahead and login with the guest account.

Now we should test the user restriction(s). Let's switch to the gentoo database:

Now let's try to do something we are not supposed to. We'll attempt to create a table.

As you can see, this function fails, as our user does not have the appropriate access. However, one access we did grant is the  statement. Let's go ahead and try that:

The command succeeds, and we're given a glimpse of what user permissions can do. We did, however, create an admin account as well. This was created to show that even all permissions granted users can still have limitations. Go ahead and quit MySQL and login as the admin.

To begin, we'll try creating a new database with our admin user. This admin user will have access similiar to the root MySQL account, and will be able to do any kind of modification to the gentoo database it chooses. This will test the user's access to the main MySQL database. Remember ealier that we only set permissions to a specific database.

Indeed, the admin user cannot create databases on the main MySQL database, despite all his permissions on the gentoo database. However, we're still able to use the admin account to modify the gentoo database, as shown here by this example data insertion.

The admin user can access the database as they please. Now sometimes, we need to get rid of user permissions. This could be anything from a problematic user to a retired employee. Let's take a look at how to disable user permissions with the  command.

Removing User Access With The REVOKE Command
The  command lets us deny access to a user. We can either deny full access, or specific access. In fact, the format is very similiar to.

REVOKE Syntax

Options here are explained in the  command section. In this section however, we're going to deny full access to a user. Let's say we find out the guest account is causing some problems security wise. We decide to revoke all privileges. We login as root and do the needful.

Now let's quit and attempt to login as a guest user.

Although we're able to login, our access to gentoo is now gone.

And our problematic user is no longer able to access the gentoo database. Please note that the user was still able to login. That is because they remain in the main MySQL database. Let's take a look at how to completely remove an account with  and the MySQL user table.

Removing Accounts Using DELETE
The MySQL user table is a listing of all users and information about them. Make sure you're logged in as root. Then go ahead and use the main MySQL database.

Now let's see what tables the mysql database has:

The user table is the table we're after. However, the user table contains 30 different fields, making it very hard to read. In order to make things easier to read, we'll go ahead and use the third version of the  statement. The fields we're after are Host and User.

Now that we have our information, we can get rid of the guest user. This is done with the  command and the syntax is shown below.

DELETE Syntax

You may notice that  is somewhat similiar to the   statement in its format. In this case, the field will be User, and the value guest. This will delete the record in the user table where the user is guest, successfully deleting our guest user account. Let's go ahead and do that:

It seems to have worked ok. Let's test by logging out and attempting to login as our guest user.

Our user is now successfully deleted!

Conclusion
While this guide focuses mainly on setting up MySQL on the command line, a few alternatives are available in GUI form:


 * phpMyAdmin - Popular php based MySQL administration tool.
 * mysqlnavigator - QT frontend to MySQL.
 * gmyclient - A GNOME based MySQL client.
 * knoda - A KDE MySQL client.

This ends the MySQL introductory tutorial. I hope this gives you a better understanding of the basics behind MySQL and getting a database set up.

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Chris White
 * Shyam Mani
 * Xavier Neys