PrésentationInstallation  |  Mise en place des utilisateurs   |    Création d'une base de données   |  lancement et arrêt du serveur MySQL   ]

Dernière modif 27.05.01

MySQL

Logiciels spécifiques

Présentation

Cette n'a pas pour but de vous présenter ce qu'est un SGBD et encore moins de vous expliquer le langage SQL mais de vous présenter l'installation et la configuration de MySQL afin de pouvoir l'utiliser avec Apache+PHP.
Vous pouvez récupérer la dernière version sur le site officiel de MySQL.

Installation

L'archive MySQL se présente sous la forme d'un .zip, mysql-3_23_38-win.zi (12,5Mo).  Décompresser l'archive dans un répertoire temporaire, dans ce répertoire, lancez setup.exe. Par défaut l'install se fait dans c:\mysql, changez si ça ne vous convient pas, personnellement je l'ai placé sous c:\Program Files\mysql. Vous avez ensuite le choix entre une installation standard (typical), mini (compact) et personnalisé (custom), j'ai choisi Custom. Vous avez alors le choix entre:
- binaires et fichiers nécessaires à MySQL (coché par défaut),
- fichiers d'aide (coché par défaut),
- fichiers de benchmark pour des tests de performances (non coché par défaut),
- les tables par défaut nécessaires au serveur (coché par défaut),
- exemples de programmes, bibliothèques et autres fichiers include (non coché par défaut).
Ce qui nous fait quand on laisse les composants par défaut cochés 20Mo nécessaires pour l'installation.

A présent pour lancer le serveur MySQL, vous avez le choix entre mysqld.exe compilé avec un max d'options de débug et vérification systématique de l'allocation/désallocation de mémoire, et mysqld-opt.exe, version compilé avec l'optimisation pour pentium sans options de débug.
D'une fenêtre DOS, exécutez mysqld-opt.exe qui se trouve sous c:\Program Files\mysql\bin. Rien ne va se passer, pour voir si le serveur  MySQL est bien lancé, dans la même fenêtre DOS, lancez mysqlshow.exe et vous devriez voir :

----------
| Databases  |
----------
| mysql          |
| test             |
----------

Vous voyez les deux bases qui ont été créées par défaut à l'installation.

[Retour haut de la page]

Mise en place des utilisateurs

MySQL repose sur le principe des privilèges, c'est à dire qu'il existe un super utilisateur root, qui a tous les droits sur les bases de MySQL, c'est lui qui autorise ou non d'autres utilisateurs à se effectuer telle ou telle manip sur les bases de données. Pour info la base mysql qui a été créée par défaut contient la liste de tous les utilisateurs autorisés ainsi que leurs privilèges associés.
La première chose donc à faire est de mettre un mot de passe pour root pour l'accès à l'administration des bases de données. La commande à taper dans une fenêtre DOS sous c:\Program Files\mysql\bin est:

mysqladmin -u root password mot-de-passe

A présent on va créer un utilisateur ordinaire. Pour cela en tant que root, connectons nous à la base de privilèges (toujours dans une fenêtre DOS sous c:\Program Files\mysql\bin)

mysql -u root -p mysql
Enter password:******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.23.21-beta

Type 'help' for help.

mysql>

Pour voir la liste des utilisateurs avec leurs privilèges, on tapera:

mysql> SELECT * FROM user;
+------+-----+---------+---------+--------+---------+---------+
|Host       |User    |Password     | Select_priv|Insert_priv|Update_priv|Delete_priv   |
+------+-----+---------+---------+--------+---------+---------+
|localhost|root     |626f04681159| Y                  | Y                 | Y                 | Y                  |
|localhost|root    |                        |  Y                 | Y                | Y                  | Y                  |
|localhost|            |                        |  Y                 | Y                | Y                  | Y                  |
|%            |            |                        |  N                 | N                | N                  | N                  |
+------+-----+---------+---------+--------+---------+---------+

---------+--------+---------+----------+----------+-------+--------+------------+--------+---------+
Create_priv|Drop_priv  |Reload_priv|Shutdown_priv|Process_priv |File_priv  |Grant_priv |References_priv|Index_priv|Alter_priv     |
---------+--------+---------+----------+----------+-------+--------+------------+--------+---------+
Y                   | Y               | Y                | Y                       | Y                    |Y               |  Y               |  Y                          |    Y           |    Y                |
Y                   | Y               | Y                | Y                       | Y                    |Y               |  Y               |  Y                          |    Y           |    Y                |
Y                   | Y               | Y                | Y                       | Y                    |Y               |  Y               |  Y                          |    Y           |    Y                |
N                   | N               | N                | N                       | N                    |N               |  N               |  N                          |    N           |    N                |
---------+--------+---------+----------+----------+-------+--------+------------+--------+---------+
4 rows in set (0.01 sec)

On voit qu'il y a toujours une ligne avec root sans mot de passe, et une autre ligne qui indique que n'importe qui  (User='') pourra faire n'importe quoi sur les bases et ceci sans rentrer aucun mot de passe (Password='') ! On va donc les supprimer:

mysql> DELETE FROM user WHERE User='root' AND Password='';
Query OK, 1 row affected (0.11 sec)

Et

mysql> DELETE FROM user WHERE Host='localhost' AND User='';
Query OK, 1 row affected (0.00 sec)

A présent on va entrer l'utilisateur olivier qui sera un super utilisateur avec les mêmes droits que root:

mysql>  INSERT INTO user
        ->  VALUES('localhost','olivier',PASSWORD('mot-de-passe'),
        ->  'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
Query OK, 1 row affected (0.00 sec)

Pour voir si la saisie s'est bien passée:

mysql> SELECT * FROM user;
+------+-----+---------+---------+--------+---------+---------+
|Host       |User    |Password     | Select_priv|Insert_priv|Update_priv|Delete_priv|
+------+-----+---------+---------+--------+---------+---------+
|localhost|root    |626f04681159| Y                   | Y                | Y                  | Y                 |
|localhost|olivier|588c54bd00a  | Y                  | Y                | Y                  | Y                  |
|%            |            |                        |  N                 | N                | N                  | N                  |
+------+-----+---------+---------+--------+---------+---------+

---------+--------+---------+----------+----------+-------+--------+------------+--------+---------+
Create_priv|Drop_priv|Reload_priv|Shutdown_priv|Process_priv|File_priv     |Grant_priv|References_priv |Index_priv|Alter_priv     |
---------+--------+---------+----------+----------+-------+--------+------------+--------+---------+
Y                   | Y               | Y                | Y                       | Y                    |Y               |  Y               |  Y                          |    Y           |    Y                |
Y                   | Y               | Y                | Y                       | Y                    |Y               |  Y               |  Y                          |    Y           |    Y                |
N                   | N               | N                | N                       | N                    |N               |  N               |  N                          |    N           |    N                |
---------+--------+---------+----------+----------+-------+--------+------------+--------+---------+
2 rows in set (0.01 sec)

Maintenant pour prendre tout ça en compte.

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.08 sec)

Et pour quitter:

mysql>QUIT
bye

Sachez que sous c:\Program Files\mysql\bin vous trouverez un outil d'administration utilisant une interface graphique convivial appelé MySqlManager mais il n'est visiblement pas encore pleinement opérationnel, à suivre cependant pour ceux pour qui les commandes en ligne dans une fenêtre DOS donnent des boutons. Pour administrer simplement vos bases à partir d'un navigateur vous disposez aussi de phpMyAdmin.
 

[Retour haut de la page]

Création de tables

Maintenant notre utilisateur olivier va créer une table qui nous servira plus tard pour nos expérimentations avec Apache. Il doit d'abord se connecter, pour cela dans une fenêtre DOS sous c:\Program Files\mysql\bin :

mysql -u olivier -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 3.23.21-beta

Type 'help' for help.

mysql>

Pour voir la liste des bases de données disponibles, on tapera:

mysql> SHOW DATABASES;
+-------+
| Database |
+---- ---+
| mysql      |
| test          |
+-------+
4 rows in set (0.00 sec)

On va maintenant créer une base de données essai:

mysql> CREATE DATABASE essai;
Query OK, 1 row affected (0.00 sec)

On va utiliser maintenant cette base de donnée

mysql> USE essai
Database changed

Comme la base vient d'être crée, elle ne contient aucune table, pour s'en convaincre il suffit de taper:

mysql> SHOW TABLES;
Empty set (0.00 sec)

Pour notre première exemple Apache+PHP+MySQL, on va créer la table suivante:

mysql> CREATE TABLE coord (
    -> nom VARCHAR(20),
    -> prenom VARCHAR(20),
    -> email VARCHAR(30)
    -> );
Query OK, 0 rows affected (0.03 sec)

Jetons un coup d'oeil maintenant sur les tables disponibles:

mysql>  SHOW TABLES;
+-------------------+
| Tables in essai                  |
+-------------------+
| coord                                   |
+-------------------+
1 row in set (0.00 sec)

La table nouvellement créée apparaît bien. Pour avoir le détail de cette table, on tapera:
 

mysql> DESCRIBE coord;
+-------+---------+----+-----+------+----+-------------------------+
| Field        | Type             | Null  | Key   | Default  |Extra| Privileges                                         |
+-------+---------+----+-----+------+----+-------------------------+
| nom          | varchar(20) | YES  |           | NULL     |         | select,insert,update,references  |
| prenom    | varchar(20) | YES  |           | NULL     |         | select,insert,update,references  |
| email        | varchar(30) | YES  |           | NULL     |         | select,insert,update,references  |
+-------+---------+----+-----+------+----+-------------------------+
3 rows in set (0.00 sec)

Pour notre deuxième exemple Apache+PHP+MySQL, on créra la table suivante:

 mysql> CREATE TABLE ref (
         -> date VARCHAR(20),
         -> host VARCHAR(20),
        -> ip VARCHAR(15),
        -> os VARCHAR(20),
        -> page VARCHAR(30)
        -> );
Query OK, 0 rows affected (0.05 sec)

Elle contiendra les informations sur les visiteurs du site. A présent pour quitter tapez simplement quit.

Reportez vous maintenant à la page Apache et au paragraphe correspondant pour la manipulation de ces tables avec Apache+PHP.

[Retour haut de la page]

 

Lancement et arrêt du serveur MySQL

Dans le répertoire c:\Program Files\mysql\bin, vous trouverez un exécutable winmysqladmin.exe, c'est une interface graphique pour le lancement et l'arrêt du serveur ainsi que pour connaître son état, cela évite d'avoir à passer par une fenêtre DOS. L'exécution de cet exé provoque l'affichage de cette fenêtre:

Saisissez le nom et le mot de passe de l'utilisateur que vous avez créé préalablement (ou éventuellement l'utilisateur root). Cela va créer un fichier my.ini, et notez qu'une petite icône représentant un feu vert est apparue en bas à droite de la barre des tâches 

En cliquant dessus avec le bouton droit de la souris, vous avez accés aux fonctions Show me et Win 9x. Pour Show me, vous avez une fenêtre de ce style qui apparaît :

En fait l'onglet par défaut à l'apparition de la fenêtre est Environment qui détaille votre environnement (nom de la machine, adresse IP, utilisateur, version logicielle, ...).  L'onglet my.ini Setup permet de modifier son fichier my.ini, on pourra ainsi modifier le répertoire de base de MySQL dans le champ Base dir et au niveau de la variable basedir et éventuellement changer la langue par défaut en remplaçant:

#language=c:/mysql/share/your language directory

Par

language=c:/Program Files/mysql/share/french

NOTE Vous devez respecter le sens du /

Sauvergarder le fichier en cliquant sur Save Modification. Vous pouvez faire disparaître la fenêtre en choisissant l'onglet Environment puis le bouton Hide Me.

Toujours avec le bouton droit de la souris si vous choisissez Win 9X vous avez le choix entre arrêter winmysqladmin (Shutdown this tool) ou de stopper le server (Shutdown the Server), ou bien encore de stopper à la fois le serveur et WinMySQLAdmin. A noter que si vous stoppez le serveur le feu passe au rouge au niveau de l'icône.

Le lancement initial de WinMySQLAdmin a placé automatiquement un raccourci vers cet exécutable dans le groupe de démarrage, en conséquence pour lancer MySQL  automatiquement au démarrage il suffit de placer un raccourci de c:\Program Files\mysql\bin\winmysqladmin.exe dans le groupe de Démarrage. Si le raccourci n'a pas été créé automatiquement, au niveau de la fenêtre WinMySQLAdmin, onglet my.ini Setup appuyez sur le bouton Create ShortCut on Start Menu.

Au démarrage le serveur MySQL sera lancé automatiquement, l'icône de WinMySQLAdmin sera toujours présente, à la sortie de window  WinMySQLAdmin se charge de stopper automatiquement le serveur MySQL.

[Retour haut de la page]