MySQL MYSQL 4.1.1 Le manuel du propriétaire

Taper
Le manuel du propriétaire
Manuel de r`ef`erence MySQL
Copyright
c
° 1997-2003 MySQL AB
i
Table des mati`eres
1 Informations g`en`erales . . . . . . . . . . . . . . . . . . . . . 1
1.1 A propos du manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Conventions utilis`ees dans ce manuel . . . . . . . . . . . . . 2
1.2 Qu’est ce que MySQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Histoire de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Les fonctionnalit`es principales de MySQL. . . . . . . . . 5
1.2.3 Jusqu’´a quel point MySQL est il stable ? . . . . . . . . . 8
1.2.4 Quelles tailles de tables supporte MySQL ? . . . . . . . 9
1.2.5 Compatibilit`e an 2000. . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Qui est MySQL AB ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Les services et le mod´ele d’affaire de MySQL AB
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.1.1 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1.2 Formation et certification . . . . . . . . . . . . . . 13
1.3.1.3 Conseil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1.4 Licences commerciales . . . . . . . . . . . . . . . . . 14
1.3.1.5 Partenariats . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1.6 Publicit`e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4 Support MySQL et licences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.1 Support propos`e par MySQL AB . . . . . . . . . . . . . . . 16
1.4.2 Copyrights et licences utilis`ees par MySQL . . . . . . 17
1.4.3 Licences MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.3.1 Utiliser MySQL avec la licence commerciale
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.3.2 Utiliser MySQL sous licence GPL libre. . 18
1.4.4 Logos MySQL AB et marque d`epos`ee . . . . . . . . . . . 19
1.4.4.1 Le logo original de MySQL . . . . . . . . . . . . 19
1.4.4.2 Logos MySQL qui peuvent ˆetre utilis`es dans
autorisation pr`ealable . . . . . . . . . . . . . . . . . . . . . 20
1.4.4.3 Quand avez vous besoin d’autorisation pour
utiliser le logo MySQL? . . . . . . . . . . . . . . . . . . . 20
1.4.4.4 Logos de partenariat MySQL AB. . . . . . . 21
1.4.4.5 Utiliser le nom MySQL sur des documents
imprim`es ou des pr`esentations . . . . . . . . . . . . . 21
1.4.4.6 Utilisation du nom MySQL dans un nom de
soci`et`e ou de produit . . . . . . . . . . . . . . . . . . . . . . 21
1.5 MySQL 4.x In A Nutshell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5.1 Phases de publication . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5.2 Utilisation imm`ediate en production . . . . . . . . . . . . 21
1.5.3 MySQL int`egr`e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.5.4 Autres nouveaut`es de MySQL 4.0 . . . . . . . . . . . . . . . 22
1.5.5 Fonctionnalit`es ´a venir de MySQL 4.x . . . . . . . . . . . 23
ii
1.5.6 MySQL 4.1 : Les nouvelles fonctionnalit`es . . . . . . . 23
1.6 Sources d’informations MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.6.1 Portails MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.6.2 Listes de diffusion MySQL . . . . . . . . . . . . . . . . . . . . . 24
1.6.2.1 Les listes de diffusions de MySQL . . . . . . 24
1.6.2.2 Poser des questions ou rapporter un bogue
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.6.2.3 Comment rapporter un bogue ou un
probl´eme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.6.2.4 Conseils pour r`epondre sur la liste de
diffusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.7 Quels standards respecte MySQL? . . . . . . . . . . . . . . . . . . . . . . . 32
1.7.1 Quels standards suit MySQL ?. . . . . . . . . . . . . . . . . . 33
1.7.2 Ex`ecuter MySQL en mode ANSI . . . . . . . . . . . . . . . . 33
1.7.3 Extensions de MySQL ´a la norme ANSI SQL92 . . 33
1.7.4 Diff`erences de MySQL avec ANSI SQL92 . . . . . . . . 36
1.7.4.1 Sous s`elections (SubSELECTs) . . . . . . . . . . 36
1.7.4.2 SELECT INTO TABLE . . . . . . . . . . . . . . . . . . . 37
1.7.4.3 Transactions et op`erations atomiques . . . 38
1.7.4.4 Proc`edures stock`ees et triggers . . . . . . . . . 40
1.7.4.5 Les cl`es `etrang´eres . . . . . . . . . . . . . . . . . . . . 41
1.7.4.6 Les vues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.7.4.7 -- comme d`ebut de commentaire. . . . . . 42
1.7.5 Erreurs connues et probl´emes de conceptions de
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.8 Les `evolutions de MySQL (la liste des aches) . . . . . . . . . . . . 46
1.8.1 Ce que devrait inclure la version 4.0. . . . . . . . . . . . . 47
1.8.2 Ce qui est pr`evu pour la version 4.1 . . . . . . . . . . . . . 47
1.8.3 Ce qui doit ˆetre fait dans un futur proche . . . . . . . 49
1.8.4 Ce qui est pr`evu pour plus tard . . . . . . . . . . . . . . . . . 52
1.8.5 Ce qui n’est pas pr`evu . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.9 Comparatif de MySQL avec les autres serveurs SQL . . . . . . 53
1.9.1 MySQL face ´a mSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.9.1.1 Comment convertir des outils mSQL pour
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.9.1.2 Diff`erences entre les protocoles de
communication de mSQL et de MySQL . . . . . . 57
1.9.1.3 Comparatif des syntaxes SQL de mSQL 2.0
et MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1.9.2 Comparatif de MySQL avec PostgreSQL . . . . . . . . 60
1.9.2.1 Strat`egies de d`eveloppement de MySQL et
PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.9.2.2 Comparaison des fonctionnalit`es de MySQL
et PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.9.2.3 Performances compar`ees de MySQL et
PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
iii
2 Installation de MySQL . . . . . . . . . . . . . . . . . . . . 69
2.1 Installation standard rapide de MySQL . . . . . . . . . . . . . . . . . . 69
2.1.1 Installer MySQL sous Linux . . . . . . . . . . . . . . . . . . . . 69
2.1.2 Installer MySQL sous Windows . . . . . . . . . . . . . . . . . 70
2.1.2.1 Installation des binaires . . . . . . . . . . . . . . . 71
2.1.2.2 Pr`eparation de l’environnement MySQL de
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.1.2.3 D`emarrer le serveur pour la premi´ere fois
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.2 Notes g`en`erales ´a propos de l’installation. . . . . . . . . . . . . . . . . 73
2.2.1 M`ethodes d’installation . . . . . . . . . . . . . . . . . . . . . . . . 73
2.2.2 Comment obtenir MySQL ? . . . . . . . . . . . . . . . . . . . . 73
2.2.3 Syst´emes d’exploitation support`es par MySQL . . . 74
2.2.4 Quelle version de MySQL utiliser ?. . . . . . . . . . . . . . 75
2.2.5 Dispositions d’installation . . . . . . . . . . . . . . . . . . . . . . 78
2.2.6 Quand et comment sont publi`ees les nouvelles
versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.2.7 Binaires compil`es par MySQL AB. . . . . . . . . . . . . . . 80
2.2.8 Installer MySQL ´a partir d’une distribution binaire
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2.3 Installer MySQL ´a partir des sources . . . . . . . . . . . . . . . . . . . . 84
2.3.1 Vue d’ensemble de l’installation rapide . . . . . . . . . . 85
2.3.2 Appliquer des patches. . . . . . . . . . . . . . . . . . . . . . . . . . 87
2.3.3 Options habituelles de configure . . . . . . . . . . . . . . . 88
2.3.4 Installer ´a partir de l’arbre source de d`eveloppement
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
2.3.5 Probl´emes de compilation? . . . . . . . . . . . . . . . . . . . . . 92
2.3.6 Notes relatives aux MIT-pthreads . . . . . . . . . . . . . . . 95
2.3.7 La distribution source Windows. . . . . . . . . . . . . . . . . 96
2.4 Configuration apr´es l’installation, et tests . . . . . . . . . . . . . . . . 97
2.4.1 Probl´emes d’ex`ecution de mysql_install_db . . . 101
2.4.2 Probl´emes de d`emarrage du serveur MySQL . . . . 102
2.4.3 Lancer et arrˆeter MySQL automatiquement. . . . . 104
2.5 Changer de version de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 105
2.5.1 Passer de la version 3.23 ´a la version 4.0. . . . . . . . 106
2.5.2 Passer de la version 3.22 ´a la version 3.23. . . . . . . 109
2.5.3 Passer de la version 3.21 ´a la version 3.22. . . . . . . 111
2.5.4 Passer de la version 3.20 ´a la version 3.21. . . . . . . 111
2.5.5 Migrer depuis une autre architecture . . . . . . . . . . . 112
2.6 Notes sp`ecifiques aux syst´emes d’exploitation . . . . . . . . . . . . 113
2.6.1 Notes relatives ´a Linux (toutes versions). . . . . . . . 113
2.6.1.1 Notes relatives ´a Linux pour les
distributions binaires . . . . . . . . . . . . . . . . . . . . . 117
2.6.1.2 Notes relatives ´a Linux x86 . . . . . . . . . . . 118
2.6.1.3 Notes relatives ´a Linux SPARC . . . . . . . 119
2.6.1.4 Notes relatives ´a Linux Alpha . . . . . . . . . 120
2.6.1.5 Note relative ´a Linux PowerPC . . . . . . . 120
2.6.1.6 Notes relatives ´a Linux MIPS . . . . . . . . . 121
iv
2.6.1.7 Notes relatives ´a Linux IA64 . . . . . . . . . . 121
2.6.2 Notes relatives ´a Windows . . . . . . . . . . . . . . . . . . . . 121
2.6.2.1 D`emarrer MySQL sous Windows 95, 98 ou
Me . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.6.2.2 D`emarrer MySQL sur Windows NT, 2000
ou XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
2.6.2.3 Faire fonctionner MySQL sous Windows
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.6.2.4 Connexion ´a un serveur MySQL distants,
sous Windows avec SSH . . . . . . . . . . . . . . . . . . 125
2.6.2.5 Paratger les donn`ees entre plusieurs disque
sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2.6.2.6 Compiler les clients MySQL sous Windows
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
2.6.2.7 MySQL pour Windows face ´a MySQL pour
Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
2.6.3 Remarques pour Solaris . . . . . . . . . . . . . . . . . . . . . . . 129
2.6.3.1 Notes relatives ´a Solaris 2.7/2.8 . . . . . . . 131
2.6.3.2 Remarques pour Solaris x86 . . . . . . . . . . 132
2.6.4 Notes relatives ´a BSD . . . . . . . . . . . . . . . . . . . . . . . . . 133
2.6.4.1 Notes relatives ´a FreeBSD . . . . . . . . . . . . 133
2.6.4.2 Notes concernant NetBSD . . . . . . . . . . . . 134
2.6.4.3 Notes relatives ´a OpenBSD 2.5. . . . . . . . 134
2.6.4.4 Notes relatives ´a OpenBSD 2.8. . . . . . . . 135
2.6.4.5 Notes relatives aux versions 2.x de BSD/OS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
2.6.4.6 Notes relatives aux versions 3.x de BSD/OS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
2.6.4.7 Notes relatives aux versions 4.x de BSD/OS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
2.6.5 Notes relatives ´a Mac OS X . . . . . . . . . . . . . . . . . . . 136
2.6.5.1 Bˆeta publique Mac OS X . . . . . . . . . . . . . 136
2.6.5.2 Mac OS X Server . . . . . . . . . . . . . . . . . . . . 136
2.6.6 Notes sur les autres Unix. . . . . . . . . . . . . . . . . . . . . . 137
2.6.6.1 Notes relatives ´a HP-UX pour les
distributions binaires . . . . . . . . . . . . . . . . . . . . . 137
2.6.6.2 Notes relatives ´a la version 10.20 de HP-UX
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
2.6.6.3 HP-UX Version 11.x Notes. . . . . . . . . . . . 138
2.6.6.4 Notes relatives ´a IBM-AIX. . . . . . . . . . . . 139
2.6.6.5 Notes relatives ´a SunOS 4 . . . . . . . . . . . . 141
2.6.6.6 Notes pour Alpha-DEC-UNIX (Tru64)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
2.6.6.7 Notes pour Alpha-DEC-OSF/1. . . . . . . . 142
2.6.6.8 Notes relatives ´a SGI Irix . . . . . . . . . . . . . 144
2.6.6.9 Notes pour Caldera (SCO). . . . . . . . . . . . 145
2.6.6.10 Notes relatives ´a la version 7.0 fr Caldera
(SCO) Unixware . . . . . . . . . . . . . . . . . . . . . . . . . 147
v
2.6.7 Notes relatives ´a OS/2 . . . . . . . . . . . . . . . . . . . . . . . . 147
2.6.8 Notes relatives ´a BeOS . . . . . . . . . . . . . . . . . . . . . . . . 148
2.6.9 Notes relatives ´a Novell NetWare . . . . . . . . . . . . . . 148
2.7 Commentaires sur l’installation de Perl . . . . . . . . . . . . . . . . . 148
2.7.1 Installer Perl sur Unix . . . . . . . . . . . . . . . . . . . . . . . . 148
2.7.2 Installer ActiveState Perl sur Windows . . . . . . . . . 149
2.7.3 Installer la distribution Perl de MySQL sous
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.7.4 Probl´emes lors de l’utilisation des interfaces Perl DBI
et DBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
3 Tutoriels d’introduction . . . . . . . . . . . . . . . . . . 153
3.1 Connexion et d`econnexion au serveur . . . . . . . . . . . . . . . . . . . 153
3.2 Entrer des requˆetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
3.3 Cr`eation et utilisation d’une base de donn`ees . . . . . . . . . . . . 157
3.3.1 Cr`eer et s`electionner une base de donn`ees . . . . . . 158
3.3.2 Cr`eation d’une table . . . . . . . . . . . . . . . . . . . . . . . . . . 159
3.3.3 Charger des donn`ees dans une table . . . . . . . . . . . . 160
3.3.4 R`ecup`erer des informations ´a partir d’une table
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
3.3.4.1 S`electionner toutes les donn`ees . . . . . . . . 162
3.3.4.2 S`electionner des lignes particuli`eres . . . . 163
3.3.4.3 S`electionner des colonnes particuli´eres
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
3.3.4.4 Trier les enregistrements . . . . . . . . . . . . . . 165
3.3.4.5 Calcul sur les Dates . . . . . . . . . . . . . . . . . . 167
3.3.4.6 Travailler avec la valeur NULL . . . . . . . . . 170
3.3.4.7 Recherche de mod´eles . . . . . . . . . . . . . . . . 170
3.3.4.8 Compter les lignes . . . . . . . . . . . . . . . . . . . 173
3.3.4.9 Utiliser plus d’une table . . . . . . . . . . . . . . 175
3.4 Obtenir des informations ´a propos des bases de donn`ees et des
tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.5 Exemples de requˆetes usuelles . . . . . . . . . . . . . . . . . . . . . . . . . . 178
3.5.1 La valeur maximale d’une colonne . . . . . . . . . . . . . 179
3.5.2 La ligne contenant le maximum d’une certaine
colonne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
3.5.3 Maximum d’une colonne par groupe. . . . . . . . . . . . 180
3.5.4 La ligne contenant la plus grande valeur d’un certain
champ par rapport ´a un groupe . . . . . . . . . . . . . . . . . . 180
3.5.5 Utiliser les variables utilisateur . . . . . . . . . . . . . . . . 181
3.5.6 Utiliser les clefs `etrang´eres . . . . . . . . . . . . . . . . . . . . 182
3.5.7 Recherche sur deux clefs . . . . . . . . . . . . . . . . . . . . . . 183
3.5.8 Calculer les visites par jour . . . . . . . . . . . . . . . . . . . . 184
3.5.9 Utiliser AUTO_INCREMENT . . . . . . . . . . . . . . . . . . . . . . 184
3.6 Utilisation de
mysql
en mode batch
. . . . . . . . . . . . . . . . . . . . .
186
3.7 Requˆetes du projet Twin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
3.7.1 Trouver tous les jumeaux r`epondant aux crit´eres
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
vi
3.7.2 Afficher une table avec l’`etat des paires de jumeaux
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
3.8 Utilisation de MySQL avec Apache . . . . . . . . . . . . . . . . . . . . . 191
4 Administration du serveur . . . . . . . . . . . . . . . 192
4.1 Configuration de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
4.1.1 Options de ligne de commande de mysqld . . . . . . 192
4.1.2 Fichier d’options my.cnf . . . . . . . . . . . . . . . . . . . . . 198
4.1.3 Installer plusieurs serveurs sur la mˆeme machine
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
4.1.4 Faire fonctionner plusieurs serveurs MySQL sur la
mˆeme machine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
4.2 R´egles de s`ecurit`e et droits d’acc´es au serveur MySQL . . . 203
4.2.1 Instructions g`en`erales de s`ecurit`e . . . . . . . . . . . . . . 203
4.2.2 Comment prot`eger MySQL contre les pirates . . . 206
4.2.3 Options de d`emarrage qui concernent la s`ecurit`e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
4.2.4 Probl´emes de s`ecurit`e avec LOAD DATA LOCAL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
4.2.5 ole du syst´eme de privil´eges. . . . . . . . . . . . . . . . . . 209
4.2.6 Comment fonctionne le syst´eme de droits . . . . . . . 209
4.2.7 Droits fournis par MySQL. . . . . . . . . . . . . . . . . . . . . 212
4.2.8 Se connecter au serveur MySQL . . . . . . . . . . . . . . . 215
4.2.9 Contrˆole d’acc´es, `etape 1 : V`erification de la
connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.2.10 Contrˆole d’acc´es, `etape 2 : V`erification de la
requˆete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
4.2.11 Causes des erreurs Access denied . . . . . . . . . . . . 221
4.3 Gestion des comptes utilisateurs de MySQL . . . . . . . . . . . . . 226
4.3.1 Syntaxe de GRANT et REVOKE . . . . . . . . . . . . . . . . . . . 226
4.3.2 Nom d’utilisateurs MySQL et mots de passe . . . . 231
4.3.3 Quand les modifications de privil´eges prennent-ils
effets ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
4.3.4 Cr`eation des premiers droits MySQL . . . . . . . . . . . 232
4.3.5 Ajouter de nouveaux utilisateurs ´a MySQL . . . . . 233
4.3.6 Limiter les ressources utilisateurs . . . . . . . . . . . . . . 236
4.3.7 Configurer les mots de passe. . . . . . . . . . . . . . . . . . . 237
4.3.8 Garder vos mots de passe en lieu sˆur . . . . . . . . . . . 238
4.3.9 Utilisation des connexions s`ecuris`ees . . . . . . . . . . . 239
4.3.9.1 Introduction aux connexions s`ecuris`ees
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
4.3.9.2 Pr`e requis aux connexions s`ecuris`ees. . . 240
4.3.9.3 Options de GRANT . . . . . . . . . . . . . . . . . . . . 241
4.4 Pr`evention des d`esastres et restauration . . . . . . . . . . . . . . . . . 242
4.4.1 Sauvegardes de base de donn`ees
. . . . . . . . . . . . . . .
242
4.4.2 Syntaxe de BACKUP TABLE . . . . . . . . . . . . . . . . . . . . . 243
4.4.3 Syntaxe de RESTORE TABLE . . . . . . . . . . . . . . . . . . . . 244
4.4.4 Syntaxe de CHECK TABLE . . . . . . . . . . . . . . . . . . . . . . 244
vii
4.4.5 Syntaxe de REPAIR TABLE . . . . . . . . . . . . . . . . . . . . . 246
4.4.6 Utilisation de myisamchk pour la maintenance des
tables et leur recouvrement . . . . . . . . . . . . . . . . . . . . . . 247
4.4.6.1 Syntaxe de l’utilitaire myisamchk . . . . . . 247
4.4.6.2 Options g`en`erales de myisamchk. . . . . . . 248
4.4.6.3 Options de v`erifications pour myisamchk
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
4.4.6.4 Options de r`eparation de myisamchk . . 250
4.4.6.5 Autres options de myisamchk . . . . . . . . . 252
4.4.6.6 Utilisation de la m`emoire par myisamchk
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
4.4.6.7 Utiliser myisamchk pour restaurer une table
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
4.4.6.8 Comment v`erifier la coh`erence d’une table
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
4.4.6.9 Comment r`eparer des tables . . . . . . . . . . 255
4.4.6.10 Optimisation de tables . . . . . . . . . . . . . . 257
4.4.7 Mettre en place un r`egime d’entretien de MySQL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
4.4.8 Obtenir des informations sur une table . . . . . . . . . 259
4.5 R`ef`erence de langage d’administration de la base de donn`ees
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
4.5.1 Syntaxe de OPTIMIZE TABLE . . . . . . . . . . . . . . . . . . . 264
4.5.2 Syntaxe de ANALYZE TABLE . . . . . . . . . . . . . . . . . . . . 264
4.5.3 Syntaxe de FLUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
4.5.4 Syntaxe de la commande RESET . . . . . . . . . . . . . . . . 266
4.5.5 Syntaxe de KILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
4.5.6 Syntaxe de SHOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
4.5.6.1 Obtenir des informations sur les bases,
tables, colonnes et index. . . . . . . . . . . . . . . . . . 268
4.5.6.2 SHOW TABLE STATUS . . . . . . . . . . . . . . . . . . 269
4.5.6.3 Syntaxe de SHOW STATUS . . . . . . . . . . . . . . 269
4.5.6.4 Syntaxe de SHOW VARIABLES . . . . . . . . . . 273
4.5.6.5 Syntaxe de SHOW LOGS . . . . . . . . . . . . . . . . 283
4.5.6.6 Syntaxe de SHOW PROCESSLIST . . . . . . . . 283
4.5.6.7 SHOW GRANTS . . . . . . . . . . . . . . . . . . . . . . . . . 285
4.5.6.8 Syntaxe de SHOW CREATE TABLE. . . . . . . . 286
4.6 Localisation de MySQL et utilisation internationale . . . . . . 286
4.6.1 Le jeu de caract´eres utilis`e pour les donn`ees et le
stockage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
4.6.1.1 Jeu de caract´eres allemand . . . . . . . . . . . 287
4.6.2 Langue des messages d’erreurs . . . . . . . . . . . . . . . . . 287
4.6.3 Ajouter un nouveau jeu de caract´eres . . . . . . . . . . 288
4.6.4 Le tableau de d`efinition des caract´eres . . . . . . . . . 289
4.6.5 Support d’assemblage des cha
ˆ
ines . . . . . . . . . . . . . . 290
4.6.6 Support des caract´eres multi-octets . . . . . . . . . . . . 290
4.6.7 Probl´emes avec les jeux de caract´eres . . . . . . . . . . 290
4.7 Scripts serveur MySQL et utilitaires . . . . . . . . . . . . . . . . . . . . 291
viii
4.7.1 Pr`esentation des scripts serveurs et des utilitaires
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
4.7.2 safe_mysqld, le script ere de mysqld . . . . . . . . . 292
4.7.3 mysqld_multi, un programme pour g`erer plusieurs
serveurs MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
4.7.4 myisampack, le g`en`erateur de tables MySQL
compress`ees en lecture seule . . . . . . . . . . . . . . . . . . . . . 297
4.7.5 mysqld-max, la version `etendue du serveur mysqld
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
4.8 MySQL Scripts clients et utilitaires . . . . . . . . . . . . . . . . . . . . . 305
4.8.1 Pr`esentation des scripts serveurs et utilitaires . . . 305
4.8.2 mysql, The Command-line Tool. . . . . . . . . . . . . . . . 306
4.8.3 mysqladmin, administrer un serveur MySQL . . . . 314
4.8.4 Utiliser mysqlcheck pour l’entretien et la r`eparation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
4.8.5 mysqldump, exporter les structures de tables et les
donn`ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
4.8.6 mysqlhotcopy, copier les bases et tables MySQL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
4.8.7 mysqlimport, importer des donn`ees depuis des
fichiers texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
4.8.8 Afficher les bases, tables et colonnes. . . . . . . . . . . . 326
4.8.9 perror, expliquer les codes d’erreurs . . . . . . . . . . . 326
4.8.10 Comment ex`ecuter des commandes SQL depuis un
fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
4.9 Les fichiers de log de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 327
4.9.1 Le log d’erreurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
4.9.2 Le log g`en`eral de requˆetes . . . . . . . . . . . . . . . . . . . . . 328
4.9.3 Le log de modification . . . . . . . . . . . . . . . . . . . . . . . . 328
4.9.4 Le log binaire de modifications . . . . . . . . . . . . . . . . 329
4.9.5 Le log des requˆetes lentes . . . . . . . . . . . . . . . . . . . . . 331
4.9.6 Entretien des fichiers de log . . . . . . . . . . . . . . . . . . . 331
4.10 R`eplication de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
4.10.1 Introduction ´a la r`eplication . . . . . . . . . . . . . . . . . . 332
4.10.2 Pr`esentation de l’impl`ementation de la r`eplication
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
4.10.3 Comment mettre en place la r`eplication . . . . . . . 334
4.10.4 Fonctionnalit`es de la r`eplication et probl´emes
connus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
4.10.5 Options de r`eplication dans le fichier my.cnf. . 338
4.10.6 Commandes SQL li`ees ´a la r`eplication . . . . . . . . . 344
4.10.7 FAQ de la r`eplication . . . . . . . . . . . . . . . . . . . . . . . . 349
4.10.8 Correction de probl´emes courants . . . . . . . . . . . . . 354
ix
5 Optimisation de MySQL . . . . . . . . . . . . . . . . . 357
5.1 Vue d’ensemble de l’optimisation . . . . . . . . . . . . . . . . . . . . . . . 357
5.1.1 Limitations et inconv`enients des choix conceptuels de
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
5.1.2 Portabilit`e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5.1.3 Pour quoi avons nous utilis`e MySQL ? . . . . . . . . . 359
5.1.4 La suite de tests MySQL . . . . . . . . . . . . . . . . . . . . . . 360
5.1.5 Utiliser vos propres tests de performance . . . . . . . 361
5.2 Optimisation des SELECTs et autres requˆetes. . . . . . . . . . . . . 362
5.2.1 Syntaxe de EXPLAIN (Obtenir des informations sur
les SELECT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
5.2.2 Mesurer les performances d’une requˆete . . . . . . . . 368
5.2.3 Vitesse des requˆetes SELECT . . . . . . . . . . . . . . . . . . . 369
5.2.4 Comment MySQL optimise les clauses WHERE . . . 369
5.2.5 Comment MySQL optimise la clause DISTINCT. . 371
5.2.6 Comment MySQL optimise LEFT JOIN et RIGHT JOIN
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
5.2.7 Comment MySQL optimise les clauses ORDER BY
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
5.2.8 Comment MySQL optimise la clause LIMIT . . . . . 374
5.2.9 Vitesse des requˆetes INSERT . . . . . . . . . . . . . . . . . . . 374
5.2.10 Vitesses des commandes UPDATE . . . . . . . . . . . . . . 376
5.2.11 Rapidit`e des requˆetes DELETE . . . . . . . . . . . . . . . . . 377
5.2.12 Autres conseils d’optimisation . . . . . . . . . . . . . . . . 377
5.3 Verrouillage de tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
5.3.1 Comment MySQL verrouille les tables. . . . . . . . . . 380
5.3.2 Probl´eme de verrouillage de tables . . . . . . . . . . . . . 381
5.4 Optimisation de la structure de la base de donn`ees. . . . . . . 382
5.4.1 Conception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
5.4.2 Rendre vos tables aussi compactes que possible. . 383
5.4.3 Comment MySQL utilise les index . . . . . . . . . . . . . 384
5.4.4 Index de colonnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
5.4.5 Index sur plusieurs colonnes . . . . . . . . . . . . . . . . . . . 387
5.4.6 Pourquoi tant de tables ouvertes ? . . . . . . . . . . . . . 387
5.4.7 Quand MySQL ouvre et ferme les tables. . . . . . . . 388
5.4.8 Inconv`enients de la cr`eation d’un grand nombre de
tables dans la mˆeme base de donn`ees . . . . . . . . . . . . . 389
5.5 Optimisation du serveur MySQL . . . . . . . . . . . . . . . . . . . . . . . 389
5.5.1 R`eglage du syst´eme, au moment de la compilation, et
param´etres du d`emarrage. . . . . . . . . . . . . . . . . . . . . . . . 389
5.5.2 R`eglage des param´etres du serveur . . . . . . . . . . . . . 390
5.5.3 Influences de la compilation et des liaisons sur la
vitesse de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
5.5.4 Comment MySQL g´ere la m`emoire . . . . . . . . . . . . . 394
5.5.5 Comment MySQL utilise le DNS. . . . . . . . . . . . . . . 395
5.5.6 Syntaxe de SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
5.6 Probl´emes avec les disques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
5.6.1 Utiliser des liens symboliques . . . . . . . . . . . . . . . . . . 401
x
5.6.1.1 Utiliser les liens symboliques pour les bases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
5.6.1.2 Utiliser des liens symboliques avec les tables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
6 R`ef`erence du langage MySQL . . . . . . . . . . . . 404
6.1 Structure du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
6.1.1 Literals: Comment `ecrire les cha
ˆ
ines et les nombres
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
6.1.1.1 Cha
ˆ
ines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
6.1.1.2 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
6.1.1.3 Valeurs hexad`ecimales . . . . . . . . . . . . . . . . 406
6.1.1.4 Valeurs NULL . . . . . . . . . . . . . . . . . . . . . . . . 406
6.1.2 Noms de bases, tables, index, colonnes et alias . . 407
6.1.3 Sensibilit`e ´a la casse pour les noms. . . . . . . . . . . . . 408
6.1.4 Variables utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . 408
6.1.5 Variables syst´eme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
6.1.6 Syntaxe des commentaires. . . . . . . . . . . . . . . . . . . . . 413
6.1.7 Est-ce que MySQL est sensible aux mots r`eserv`es ?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
6.2 Types de colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
6.2.1 Types num`eriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
6.2.2 Les types date et heure . . . . . . . . . . . . . . . . . . . . . . . 423
6.2.2.1 An 2000 et les types date . . . . . . . . . . . . . 424
6.2.2.2 Les types DATETIME, DATE, et TIMESTAMP
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
6.2.2.3 Le type TIME . . . . . . . . . . . . . . . . . . . . . . . . 428
6.2.2.4 Le type YEAR . . . . . . . . . . . . . . . . . . . . . . . . 429
6.2.3 Les types cha
ˆ
ines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
6.2.3.1 Les types CHAR et VARCHAR . . . . . . . . . . . . 429
6.2.3.2 Les types BLOB et TEXT . . . . . . . . . . . . . . . 430
6.2.3.3 Le type ENUM . . . . . . . . . . . . . . . . . . . . . . . . 431
6.2.3.4 Le type SET . . . . . . . . . . . . . . . . . . . . . . . . . 433
6.2.4 Choisir le bon type de colonne . . . . . . . . . . . . . . . . . 434
6.2.5 Utilisation des types de donn`ees issues d’autres
SGBDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
6.2.6 Capacit`es des colonnes . . . . . . . . . . . . . . . . . . . . . . . . 435
6.3 Fonctions ´a utiliser dans les clauses SELECT et WHERE . . . . . 436
6.3.1 Op`erateurs et fonctions tout-types . . . . . . . . . . . . . 437
6.3.1.1 Parenth´eses. . . . . . . . . . . . . . . . . . . . . . . . . . 437
6.3.1.2 Op`erateurs de comparaison . . . . . . . . . . . 437
6.3.1.3 Op`erateurs logiques . . . . . . . . . . . . . . . . . . 440
6.3.1.4 Les fonctions de contrˆole . . . . . . . . . . . . . 442
6.3.2 Fonctions de cha
ˆ
ines de caract´eres . . . . . . . . . . . . . 444
6.3.2.1 Op`erateurs de comparaison pour les cha
ˆ
ines
de caract´eres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
6.3.2.2 Sensibilit`e ´a la casse. . . . . . . . . . . . . . . . . . 454
6.3.3 Fonctions num`eriques . . . . . . . . . . . . . . . . . . . . . . . . . 455
xi
6.3.3.1 Op`erations arithm`etiques . . . . . . . . . . . . . 455
6.3.3.2 Fonctions math`ematiques . . . . . . . . . . . . . 455
6.3.4 Fonctions de dates et d’heures . . . . . . . . . . . . . . . . . 461
6.3.5 Fonctions de transtypage . . . . . . . . . . . . . . . . . . . . . . 470
6.3.6 Autres fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
6.3.6.1 Fonctions sur les bits . . . . . . . . . . . . . . . . . 471
6.3.6.2 Fonctions diverses. . . . . . . . . . . . . . . . . . . . 472
6.3.7 Fonctions avec la clause GROUP BY . . . . . . . . . . . . . . 479
6.4 Manipulation de donn`ees : SELECT, INSERT, UPDATE, DELETE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
6.4.1 Syntaxe de SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
6.4.1.1 Syntaxe de JOIN . . . . . . . . . . . . . . . . . . . . . 486
6.4.1.2 Syntaxe de UNION . . . . . . . . . . . . . . . . . . . . 487
6.4.2 Syntaxe de HANDLER . . . . . . . . . . . . . . . . . . . . . . . . . . 488
6.4.3 Syntaxe de INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
6.4.3.1 Syntaxe de INSERT ... SELECT. . . . . . . . 491
6.4.4 Syntaxe de INSERT DELAYED . . . . . . . . . . . . . . . . . . . 491
6.4.5 Syntaxe de UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
6.4.6 Syntaxe de DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
6.4.7 Syntaxe de TRUNCATE . . . . . . . . . . . . . . . . . . . . . . . . . 496
6.4.8 Syntaxe de REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . 496
6.4.9 Syntaxe de LOAD DATA INFILE . . . . . . . . . . . . . . . . . 496
6.4.10 Syntaxe de DO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
6.5 D`efinition de donn`ees : CREATE, DROP, ALTER . . . . . . . . . . . . 503
6.5.1 Syntaxe de CREATE DATABASE . . . . . . . . . . . . . . . . . . 503
6.5.2 Syntaxe de DROP DATABASE . . . . . . . . . . . . . . . . . . . . 503
6.5.3 Syntaxe de CREATE TABLE . . . . . . . . . . . . . . . . . . . . . 504
6.5.3.1 Modification automatique du type de
colonnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
6.5.4 Syntaxe de ALTER TABLE . . . . . . . . . . . . . . . . . . . . . . 512
6.5.5 Syntaxe de RENAME TABLE . . . . . . . . . . . . . . . . . . . . . 516
6.5.6 Syntaxe de DROP TABLE . . . . . . . . . . . . . . . . . . . . . . . 516
6.5.7 Syntaxe de CREATE INDEX . . . . . . . . . . . . . . . . . . . . . 517
6.5.8 Syntaxe de DROP INDEX . . . . . . . . . . . . . . . . . . . . . . . 517
6.6 Commandes de bases de l’utilisateur de MySQL . . . . . . . . . 517
6.6.1 Syntaxe de USE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
6.6.2 Syntaxe de DESCRIBE (obtenir des informations sur
les colonnes). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
6.7 Commandes relatives aux verrous et aux transactions . . . . 518
6.7.1 Syntaxe de BEGIN/COMMIT/ROLLBACK . . . . . . . . . . . 518
6.7.2 Syntaxe de LOCK TABLES/UNLOCK TABLES . . . . . . . 519
6.7.3 Syntaxe de SET TRANSACTION . . . . . . . . . . . . . . . . . . 521
6.8 Recherche en Texte-entier (Full-text) dans MySQL. . . . . . . 522
6.8.1 Restrictions avec full-text . . . . . . . . . . . . . . . . . . . . . 525
6.8.2 Param`etrage pr`ecis de la recherche Full-text de
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
6.8.3 A faire dans la recherche Full-text . . . . . . . . . . . . . 526
6.9 Cache de requˆetes MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
xii
6.9.1 Comment fonctionne le cache de requˆetes . . . . . . . 527
6.9.2 Configuration du cache de requˆetes . . . . . . . . . . . . 528
6.9.3 Options relatives au cache de requˆetes dans un
SELECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
6.9.4 Status du cache de requˆetes et maintenance. . . . . 529
7 Types de tables MySQL. . . . . . . . . . . . . . . . . . 531
7.1 Tables MyISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
7.1.1 Espace requis pour les clefs . . . . . . . . . . . . . . . . . . . . 534
7.1.2 Formats de table MyISAM . . . . . . . . . . . . . . . . . . . . . . 535
7.1.2.1 Caract`eristiques des tables statiques (taille
fix`ee) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
7.1.2.2 Caract`eristiques des tables ´a format de
ligne dynamiques . . . . . . . . . . . . . . . . . . . . . . . . 535
7.1.2.3 Caract`eristiques des tables compress`ees
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
7.1.3 Probl´emes avec les tables MyISAM . . . . . . . . . . . . . . 537
7.1.3.1 Tables MyISAM corrompues . . . . . . . . . . . . 537
7.1.3.2 Clients is using or hasn’t closed the table
properly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
7.2 Tables assembl`ees MERGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
7.2.1 Probl´emes avec les tables MERGE . . . . . . . . . . . . . . . 541
7.3 Tables ISAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
7.4 Tables HEAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
7.5 Tables InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
7.5.1 Pr`esentation des tables InnoDB. . . . . . . . . . . . . . . . 544
7.5.2 Options de d`emarrage InnoDB. . . . . . . . . . . . . . . . . 545
7.5.3 Cr`eer des bases InnoDB . . . . . . . . . . . . . . . . . . . . . . . 551
7.5.3.1 Si quelque chose se passe mal ´a la cr`eation
de la base de donn`ees . . . . . . . . . . . . . . . . . . . . 552
7.5.4 Cr`eer des tables InnoDB . . . . . . . . . . . . . . . . . . . . . . 552
7.5.4.1 Convertir une table MyISAM en InnoDB
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
7.5.4.2 Contraintes de cl`e `etrang´eres. . . . . . . . . . 553
7.5.5 Ajouter et retirer des donn`ees et des logs InnoDB
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
7.5.6 Sauver et restaurer une base InnoDB. . . . . . . . . . . 556
7.5.6.1 Points de contrˆole . . . . . . . . . . . . . . . . . . . . 557
7.5.7 Transf`erer une base de donn`ees InnoDB vers une
autre machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
7.5.8 Mod´ele transactionnel de InnoDB . . . . . . . . . . . . . . 558
7.5.8.1 Lecture coh`erente . . . . . . . . . . . . . . . . . . . . 560
7.5.8.2 Verrous de lecture. . . . . . . . . . . . . . . . . . . . 560
7.5.8.3 Verrou de cl`e suivante : `eviter le probl´eme
des lignes fanomes
. . . . . . . . . . . . . . . . . . . . . . .
561
7.5.8.4 Les verrous pos`es par diff`erentes requˆetes
SQL avec InnoDB. . . . . . . . . . . . . . . . . . . . . . . . 562
7.5.8.5 D`etection des blocages et annulation . . 562
xiii
7.5.8.6 Un exemple de lecture coh`erente avec
InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
7.5.8.7 Comment g`erer les blocages de verrous?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
7.5.8.8 Conseils sur l’am`elioration des
performances InnoDB . . . . . . . . . . . . . . . . . . . . 565
7.5.8.9 Le moniteur InnoDB . . . . . . . . . . . . . . . . . 566
7.5.9 Impl`ementation du multi-versionnage . . . . . . . . . . 568
7.5.10 Structures de tables et d’index. . . . . . . . . . . . . . . . 569
7.5.10.1 Structure physique d’un index . . . . . . . 570
7.5.10.2 Bufferisation des insertions . . . . . . . . . . 570
7.5.10.3 Index hash adaptatifs . . . . . . . . . . . . . . . 570
7.5.10.4 Structure physique d’une ligne . . . . . . . 571
7.5.10.5 Comment une colonne de type
auto-increment fonctionne avec InnoDB . . . 571
7.5.11 Gestion de l’espace fichiers et des entr`ees/sorties
disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
7.5.11.1 Acc´es disques . . . . . . . . . . . . . . . . . . . . . . . 571
7.5.11.2 Gestion de l’espace fichier . . . . . . . . . . . 572
7.5.11.3 D`efragmentation des tables . . . . . . . . . . 573
7.5.12 Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . 573
7.5.13 Restrictions sur les tables InnoDB . . . . . . . . . . . . 574
7.5.14 Historique de l’`evolution InnoDB . . . . . . . . . . . . . 575
7.5.14.1 MySQL/InnoDB-4.0.5, November 18, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
7.5.14.2 MySQL/InnoDB-3.23.53, October 9, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
7.5.14.3 MySQL/InnoDB-4.0.4, October 2, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
7.5.14.4 MySQL/InnoDB-4.0.3, August 28, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
7.5.14.5 MySQL/InnoDB-3.23.52, August 16, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
7.5.14.6 MySQL/InnoDB-4.0.2, July 10, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
7.5.14.7 MySQL/InnoDB-3.23.51, June 12, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
7.5.14.8 MySQL/InnoDB-3.23.50, April 23, 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
7.5.14.9 MySQL/InnoDB-3.23.49, February 17,
2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
7.5.14.10 MySQL/InnoDB-3.23.48, February 9,
2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
7.5.14.11 MySQL/InnoDB-3.23.47, December 28,
2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
7.5.14.12 MySQL/InnoDB-4.0.1, December 23,
2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
xiv
7.5.14.13 MySQL/InnoDB-3.23.46, November 30,
2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
7.5.14.14 MySQL/InnoDB-3.23.45, November 23,
2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
7.5.14.15 MySQL/InnoDB-3.23.44, November 2,
2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
7.5.14.16 MySQL/InnoDB-3.23.43, October 4, 2001
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
7.5.14.17 MySQL/InnoDB-3.23.42, September 9,
2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
7.5.14.18 MySQL/InnoDB-3.23.41, August 13,
2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
7.5.14.19 MySQL/InnoDB-3.23.40, July 16, 2001
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
7.5.14.20 MySQL/InnoDB-3.23.39, June 13, 2001
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
7.5.14.21 MySQL/InnoDB-3.23.38, May 12, 2001
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
7.5.15 Informations de contact InnoDB . . . . . . . . . . . . . . 585
7.6 Tables BDB ou BerkeleyDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
7.6.1 Vue d’ensemble des tables BDB . . . . . . . . . . . . . . . . . 585
7.6.2 Installation de BDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
7.6.3 Options de d`emarrage BDB. . . . . . . . . . . . . . . . . . . . . 586
7.6.4 Caract`eristiques des tables BDB . . . . . . . . . . . . . . . . 587
7.6.5 Ce que nous devons corriger dans BDB dans un futur
proche : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
7.6.6 Syst´emes d’exploitation support`es par BDB . . . . . . 588
7.6.7 Restrictions avec les tables BDB . . . . . . . . . . . . . . . . 589
7.6.8 Erreurs pouvant survenir lors de l’utilisation des
tables BDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
8 Les interfaces pour MySQL . . . . . . . . . . . . . . 591
8.1 API PHP pour MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
8.1.1 Probl´emes fr`equents avec MySQL et PHP . . . . . . 591
8.2 API Perl pour MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
8.2.1 DBI avec DBD::mysql . . . . . . . . . . . . . . . . . . . . . . . . . 591
8.2.2 L’interface DBI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
8.2.3 Plus d’informations relatives ´a DBI/DBD . . . . . . . . 598
8.3 Support ODBC avec MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . 599
8.3.1 Comment installer MyODBC . . . . . . . . . . . . . . . . . . 599
8.3.2 Comment remplir les diff`erents champs dans le
programme d’administrateur ODBC. . . . . . . . . . . . . . 600
8.3.3 Param´etres de connexion de MyODBC . . . . . . . . . 601
8.3.4 Comment reporter les probl´emes avec ODBC . . . 602
8.3.5 Programmes qui fonctionnent avec MyODBC
. . .
602
8.3.6 Comment obtenir la valeur d’une colonne
AUTO_INCREMENT avec ODBC . . . . . . . . . . . . . . . . . . . . 608
8.3.7 Rapporter des probl´emes avec MyODBC . . . . . . . 608
xv
8.4 Interface C pour MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
8.4.1 Types de donn`ees de l’API C . . . . . . . . . . . . . . . . . . 609
8.4.2 Vue d’ensemble des fonctions de l’API C . . . . . . . 612
8.4.3 Description des fonctions de l’API C . . . . . . . . . . . 616
8.4.3.1 mysql_affected_rows() . . . . . . . . . . . . . 617
8.4.3.2 mysql_change_user() . . . . . . . . . . . . . . . 618
8.4.3.3 mysql_character_set_name(). . . . . . . . 619
8.4.3.4 mysql_close() . . . . . . . . . . . . . . . . . . . . . . 619
8.4.3.5 mysql_connect() . . . . . . . . . . . . . . . . . . . . 620
8.4.3.6 mysql_create_db(). . . . . . . . . . . . . . . . . . 620
8.4.3.7 mysql_data_seek(). . . . . . . . . . . . . . . . . . 621
8.4.3.8 mysql_debug() . . . . . . . . . . . . . . . . . . . . . . 621
8.4.3.9 mysql_drop_db() . . . . . . . . . . . . . . . . . . . . 622
8.4.3.10 mysql_dump_debug_info() . . . . . . . . . . 623
8.4.3.11 mysql_eof() . . . . . . . . . . . . . . . . . . . . . . . 623
8.4.3.12 mysql_errno() . . . . . . . . . . . . . . . . . . . . . 624
8.4.3.13 mysql_error() . . . . . . . . . . . . . . . . . . . . . 625
8.4.3.14 mysql_escape_string() . . . . . . . . . . . . 626
8.4.3.15 mysql_fetch_field() . . . . . . . . . . . . . . 626
8.4.3.16 mysql_fetch_fields() . . . . . . . . . . . . . 627
8.4.3.17 mysql_fetch_field_direct(). . . . . . . 627
8.4.3.18 mysql_fetch_lengths() . . . . . . . . . . . . 628
8.4.3.19 mysql_fetch_row() . . . . . . . . . . . . . . . . 629
8.4.3.20 mysql_field_count() . . . . . . . . . . . . . . 630
8.4.3.21 mysql_field_seek() . . . . . . . . . . . . . . . 631
8.4.3.22 mysql_field_tell() . . . . . . . . . . . . . . . 632
8.4.3.23 mysql_free_result() . . . . . . . . . . . . . . 632
8.4.3.24 mysql_get_client_info() . . . . . . . . . . 633
8.4.3.25 mysql_get_host_info() . . . . . . . . . . . . 633
8.4.3.26 mysql_get_proto_info() . . . . . . . . . . . 633
8.4.3.27 mysql_get_server_info() . . . . . . . . . . 634
8.4.3.28 mysql_info() . . . . . . . . . . . . . . . . . . . . . . 634
8.4.3.29 mysql_init() . . . . . . . . . . . . . . . . . . . . . . 635
8.4.3.30 mysql_insert_id() . . . . . . . . . . . . . . . . 635
8.4.3.31 mysql_kill() . . . . . . . . . . . . . . . . . . . . . . 636
8.4.3.32 mysql_list_dbs(). . . . . . . . . . . . . . . . . . 637
8.4.3.33 mysql_list_fields() . . . . . . . . . . . . . . 637
8.4.3.34 mysql_list_processes() . . . . . . . . . . . 638
8.4.3.35 mysql_list_tables() . . . . . . . . . . . . . . 639
8.4.3.36 mysql_num_fields() . . . . . . . . . . . . . . . 639
8.4.3.37 mysql_num_rows(). . . . . . . . . . . . . . . . . . 641
8.4.3.38 mysql_options() . . . . . . . . . . . . . . . . . . . 641
8.4.3.39 mysql_ping() . . . . . . . . . . . . . . . . . . . . . . 643
8.4.3.40 mysql_query() . . . . . . . . . . . . . . . . . . . . . 644
8.4.3.41 mysql_real_connect() . . . . . . . . . . . . . 644
8.4.3.42 mysql_real_escape_string(). . . . . . . 647
8.4.3.43 mysql_real_query() . . . . . . . . . . . . . . . 648
8.4.3.44 mysql_reload() . . . . . . . . . . . . . . . . . . . . 649
xvi
8.4.3.45 mysql_row_seek(). . . . . . . . . . . . . . . . . . 649
8.4.3.46 mysql_row_tell(). . . . . . . . . . . . . . . . . . 650
8.4.3.47 mysql_select_db() . . . . . . . . . . . . . . . . 650
8.4.3.48 mysql_shutdown(). . . . . . . . . . . . . . . . . . 651
8.4.3.49 mysql_stat() . . . . . . . . . . . . . . . . . . . . . . 652
8.4.3.50 mysql_store_result() . . . . . . . . . . . . . 652
8.4.3.51 mysql_thread_id() . . . . . . . . . . . . . . . . 653
8.4.3.52 mysql_use_result() . . . . . . . . . . . . . . . 654
8.4.4 Description des fonctions thread`ees de C . . . . . . . 655
8.4.4.1 my_init() . . . . . . . . . . . . . . . . . . . . . . . . . . 655
8.4.4.2 mysql_thread_init() . . . . . . . . . . . . . . . 655
8.4.4.3 mysql_thread_end() . . . . . . . . . . . . . . . . 656
8.4.4.4 mysql_thread_safe() . . . . . . . . . . . . . . . 656
8.4.5 Description des fonctions C du serveur embarqu`e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
8.4.5.1 mysql_server_init() . . . . . . . . . . . . . . . 657
8.4.5.2 mysql_server_end() . . . . . . . . . . . . . . . . 658
8.4.6 Questions courantes sur la librairie C . . . . . . . . . . 658
8.4.6.1 Pourquoi est ce qu’apr´es mysql_query() ait
indiqu`e un r`esultat positif,
mysql_store_result() retourne parfois NULL?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
8.4.6.2 Quels r`esultats puis-je obtenir d’une
requˆete?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
8.4.6.3 Comment obtenir l’identifiant unique du
dernier enregistrement ins`er`e ? . . . . . . . . . . . . 659
8.4.6.4 Probl´emes lors de la liaison avec l’API C
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
8.4.7 Compiler les clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
8.4.8 Comment faire un client MySQL thread`e . . . . . . . 660
8.4.9 libmysqld, la librairie du serveur embarqu`e MySQL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
8.4.9.1 Vue d’ensemble de la librairie du serveur
embarqu`e MySQL . . . . . . . . . . . . . . . . . . . . . . . 662
8.4.9.2 Compiler des programmes avec libmysqld
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
8.4.9.3 Restrictions lors de l’utilisation du serveur
embarqu`e MySQL . . . . . . . . . . . . . . . . . . . . . . . 663
8.4.9.4 Utilisation de fichiers d’options avec le
serveur embarqu`e . . . . . . . . . . . . . . . . . . . . . . . . 663
8.4.9.5 Choses ´a faire pour le serveur embarqu`e
(TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
8.4.9.6 Un exemple simple de serveur embarqu`e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
8.4.9.7 Licence du serveur embarqu`e. . . . . . . . . . 667
8.5 Interfaces MySQL pour C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
8.5.1 Borland C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
8.6 Connectivit`e Java/MySQL (JDBC) . . . . . . . . . . . . . . . . . . . . . 668
xvii
8.7 Interface Python pour MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 668
8.8 Interface Tcl pour MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
8.9 Couche MySQL pour Eiffel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
9 Etendre MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 669
9.1 Rouages de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
9.1.1 Threads MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
9.1.2 Suite de test de MySQL. . . . . . . . . . . . . . . . . . . . . . . 669
9.1.2.1 Ex`ecuter la suite de tests MySQL . . . . . 670
9.1.2.2 Am`eliorer la suite de tests MySQL . . . . 670
9.1.2.3 Rapporter des bugs dans la suite de tests
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
9.2 Ajouter des fonctions ´a MySQL . . . . . . . . . . . . . . . . . . . . . . . . 672
9.2.1 Syntaxe de CREATE FUNCTION/DROP FUNCTION . . . 673
9.2.2 Ajouter une nouvelle fonction d`efinie par l’utilisateur
(UDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
9.2.2.1 Fonctions utiliateur : appeler des fonctions
simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
9.2.2.2 Appeler des fonctions utilisateurs pour les
groupements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
9.2.2.3 Traitement des arguments . . . . . . . . . . . . 677
9.2.2.4 Valeurs de retour et gestion d’erreurs.. . 679
9.2.2.5 Compiler et installer des fonctions
utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
9.2.3 Ajouter de nouvelles fonctions natives . . . . . . . . . . 681
9.3 Ajouter une nouvelle proc`edure ´a MySQL . . . . . . . . . . . . . . . 682
9.3.1 La proc`edure Analyse . . . . . . . . . . . . . . . . . . . . . . . . . 682
9.3.2 Ecrire une proc`edure. . . . . . . . . . . . . . . . . . . . . . . . . . 683
Annexe A Probl´emes et erreurs communes . . 684
A.1 Comment d`eterminer ce qui pose probl´eme . . . . . . . . . . . . . 684
A.2 Erreurs communes rencontr`ees avec MySQL . . . . . . . . . . . . 685
A.2.1 Erreur Access denied . . . . . . . . . . . . . . . . . . . . . . . . 685
A.2.2 Erreur MySQL server has gone away. . . . . . . . . . . 685
A.2.3 Erreur Can’t connect to [local] MySQL server
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
A.2.4 Host ’...’ is blocked Error . . . . . . . . . . . . . . . . . 688
A.2.5 Erreur Too many connections . . . . . . . . . . . . . . . . 688
A.2.6 Erreur Some non-transactional changed tables
couldn’t be rolled back . . . . . . . . . . . . . . . . . . . . . . . 689
A.2.7 Erreur Out of memory . . . . . . . . . . . . . . . . . . . . . . . . 689
A.2.8 Erreur Packet too large . . . . . . . . . . . . . . . . . . . . . 689
A.2.9 Erreurs de communication / Connexion annul`ee
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
A.2.10 Erreur The table is full . . . . . . . . . . . . . . . . . . . 691
A.2.11 Erreur Can’t create/write to file . . . . . . . . . 692
A.2.12 Erreur du client Commands out of sync . . . . . . . 692
A.2.13 Erreur Ignoring user . . . . . . . . . . . . . . . . . . . . . . . 692
xviii
A.2.14 Erreur Table ’xxx’ doesn’t exist . . . . . . . . . . 693
A.2.15 Erreur Can’t initialize character set xxx
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
A.2.16 Fichier non trouv`e . . . . . . . . . . . . . . . . . . . . . . . . . . 694
A.3 Notes relatives ´a l’installation . . . . . . . . . . . . . . . . . . . . . . . . . 695
A.3.1 Probl´emes lors de la liaison avec la librairie du client
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
A.3.2 Comment ex`ecuter MySQL comme un utilisateur
normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
A.3.3 Probl´emes avec les permissions sur fichiers . . . . . 697
A.4 Notes relatives ´a l’administration . . . . . . . . . . . . . . . . . . . . . . 697
A.4.1 Que faire si MySQL crashe constamment ? . . . . . 697
A.4.2 Comment r`einitialiser un mot de passe Root oubli`e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
A.4.3 Comment MySQL g´ere un disque plein . . . . . . . . 700
A.4.4 O´u MySQL stocke les fichiers temporaires ? . . . . 701
A.4.5 Comment prot`eger ou changer le fichier socket
/tmp/mysql.sock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
A.4.6 Probl´emes de fuseaux horaires . . . . . . . . . . . . . . . . 702
A.5 Probl´emes relatifs aux requˆetes . . . . . . . . . . . . . . . . . . . . . . . . 702
A.5.1 Sensibilit`e ´a la casse dans les recherches. . . . . . . . 702
A.5.2 Probl´emes avec l’utilisation des colonnes DATE . . 703
A.5.3 Probl´emes avec les valeurs NULL . . . . . . . . . . . . . . . 704
A.5.4 Probl´emes avec les alias . . . . . . . . . . . . . . . . . . . . . 705
A.5.5 Effacer des lignes de tables reli`ees . . . . . . . . . . . . . 706
A.5.6 R`esoudre les probl´emes des lignes non retourn`ees
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
A.5.7 Probl´emes de comparaisons avec nombres ´a virgule
flottante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
A.6 Questions relatives aux d`efinitions de tables . . . . . . . . . . . . 709
A.6.1 Probl´emes avec ALTER TABLE. . . . . . . . . . . . . . . . . . 709
A.6.2 Comment changer l’ordre des colonnes dans une
table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
A.6.3 Probl´emes avec les tables temporaires. . . . . . . . . . 710
Annexe B Contributions . . . . . . . . . . . . . . . . . . . 711
B.1 APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
B.2 Convertisseurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
B.3 Utilitaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Annexe C Cr`edits . . . . . . . . . . . . . . . . . . . . . . . . . . 717
C.1 D`eveloppeurs chez MySQL AB . . . . . . . . . . . . . . . . . . . . . . . . 717
C.2 Contributeurs ´a MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
C.3 Supporters de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
  • Page 1 1
  • Page 2 2
  • Page 3 3
  • Page 4 4
  • Page 5 5
  • Page 6 6
  • Page 7 7
  • Page 8 8
  • Page 9 9
  • Page 10 10
  • Page 11 11
  • Page 12 12
  • Page 13 13
  • Page 14 14
  • Page 15 15
  • Page 16 16
  • Page 17 17
  • Page 18 18
  • Page 19 19
  • Page 20 20
  • Page 21 21
  • Page 22 22
  • Page 23 23
  • Page 24 24
  • Page 25 25
  • Page 26 26
  • Page 27 27
  • Page 28 28
  • Page 29 29
  • Page 30 30
  • Page 31 31
  • Page 32 32
  • Page 33 33
  • Page 34 34
  • Page 35 35
  • Page 36 36
  • Page 37 37
  • Page 38 38
  • Page 39 39
  • Page 40 40
  • Page 41 41
  • Page 42 42
  • Page 43 43
  • Page 44 44
  • Page 45 45
  • Page 46 46
  • Page 47 47
  • Page 48 48
  • Page 49 49
  • Page 50 50
  • Page 51 51
  • Page 52 52
  • Page 53 53
  • Page 54 54
  • Page 55 55
  • Page 56 56
  • Page 57 57
  • Page 58 58
  • Page 59 59
  • Page 60 60
  • Page 61 61
  • Page 62 62
  • Page 63 63
  • Page 64 64
  • Page 65 65
  • Page 66 66
  • Page 67 67
  • Page 68 68
  • Page 69 69
  • Page 70 70
  • Page 71 71
  • Page 72 72
  • Page 73 73
  • Page 74 74
  • Page 75 75
  • Page 76 76
  • Page 77 77
  • Page 78 78
  • Page 79 79
  • Page 80 80
  • Page 81 81
  • Page 82 82
  • Page 83 83
  • Page 84 84
  • Page 85 85
  • Page 86 86
  • Page 87 87
  • Page 88 88
  • Page 89 89
  • Page 90 90
  • Page 91 91
  • Page 92 92
  • Page 93 93
  • Page 94 94
  • Page 95 95
  • Page 96 96
  • Page 97 97
  • Page 98 98
  • Page 99 99
  • Page 100 100
  • Page 101 101
  • Page 102 102
  • Page 103 103
  • Page 104 104
  • Page 105 105
  • Page 106 106
  • Page 107 107
  • Page 108 108
  • Page 109 109
  • Page 110 110
  • Page 111 111
  • Page 112 112
  • Page 113 113
  • Page 114 114
  • Page 115 115
  • Page 116 116
  • Page 117 117
  • Page 118 118
  • Page 119 119
  • Page 120 120
  • Page 121 121
  • Page 122 122
  • Page 123 123
  • Page 124 124
  • Page 125 125
  • Page 126 126
  • Page 127 127
  • Page 128 128
  • Page 129 129
  • Page 130 130
  • Page 131 131
  • Page 132 132
  • Page 133 133
  • Page 134 134
  • Page 135 135
  • Page 136 136
  • Page 137 137
  • Page 138 138
  • Page 139 139
  • Page 140 140
  • Page 141 141
  • Page 142 142
  • Page 143 143
  • Page 144 144
  • Page 145 145
  • Page 146 146
  • Page 147 147
  • Page 148 148
  • Page 149 149
  • Page 150 150
  • Page 151 151
  • Page 152 152
  • Page 153 153
  • Page 154 154
  • Page 155 155
  • Page 156 156
  • Page 157 157
  • Page 158 158
  • Page 159 159
  • Page 160 160
  • Page 161 161
  • Page 162 162
  • Page 163 163
  • Page 164 164
  • Page 165 165
  • Page 166 166
  • Page 167 167
  • Page 168 168
  • Page 169 169
  • Page 170 170
  • Page 171 171
  • Page 172 172
  • Page 173 173
  • Page 174 174
  • Page 175 175
  • Page 176 176
  • Page 177 177
  • Page 178 178
  • Page 179 179
  • Page 180 180
  • Page 181 181
  • Page 182 182
  • Page 183 183
  • Page 184 184
  • Page 185 185
  • Page 186 186
  • Page 187 187
  • Page 188 188
  • Page 189 189
  • Page 190 190
  • Page 191 191
  • Page 192 192
  • Page 193 193
  • Page 194 194
  • Page 195 195
  • Page 196 196
  • Page 197 197
  • Page 198 198
  • Page 199 199
  • Page 200 200
  • Page 201 201
  • Page 202 202
  • Page 203 203
  • Page 204 204
  • Page 205 205
  • Page 206 206
  • Page 207 207
  • Page 208 208
  • Page 209 209
  • Page 210 210
  • Page 211 211
  • Page 212 212
  • Page 213 213
  • Page 214 214
  • Page 215 215
  • Page 216 216
  • Page 217 217
  • Page 218 218
  • Page 219 219
  • Page 220 220
  • Page 221 221
  • Page 222 222
  • Page 223 223
  • Page 224 224
  • Page 225 225
  • Page 226 226
  • Page 227 227
  • Page 228 228
  • Page 229 229
  • Page 230 230
  • Page 231 231
  • Page 232 232
  • Page 233 233
  • Page 234 234
  • Page 235 235
  • Page 236 236
  • Page 237 237
  • Page 238 238
  • Page 239 239
  • Page 240 240
  • Page 241 241
  • Page 242 242
  • Page 243 243
  • Page 244 244
  • Page 245 245
  • Page 246 246
  • Page 247 247
  • Page 248 248
  • Page 249 249
  • Page 250 250
  • Page 251 251
  • Page 252 252
  • Page 253 253
  • Page 254 254
  • Page 255 255
  • Page 256 256
  • Page 257 257
  • Page 258 258
  • Page 259 259
  • Page 260 260
  • Page 261 261
  • Page 262 262
  • Page 263 263
  • Page 264 264
  • Page 265 265
  • Page 266 266
  • Page 267 267
  • Page 268 268
  • Page 269 269
  • Page 270 270
  • Page 271 271
  • Page 272 272
  • Page 273 273
  • Page 274 274
  • Page 275 275
  • Page 276 276
  • Page 277 277
  • Page 278 278
  • Page 279 279
  • Page 280 280
  • Page 281 281
  • Page 282 282
  • Page 283 283
  • Page 284 284
  • Page 285 285
  • Page 286 286
  • Page 287 287
  • Page 288 288
  • Page 289 289
  • Page 290 290
  • Page 291 291
  • Page 292 292
  • Page 293 293
  • Page 294 294
  • Page 295 295
  • Page 296 296
  • Page 297 297
  • Page 298 298
  • Page 299 299
  • Page 300 300
  • Page 301 301
  • Page 302 302
  • Page 303 303
  • Page 304 304
  • Page 305 305
  • Page 306 306
  • Page 307 307
  • Page 308 308
  • Page 309 309
  • Page 310 310
  • Page 311 311
  • Page 312 312
  • Page 313 313
  • Page 314 314
  • Page 315 315
  • Page 316 316
  • Page 317 317
  • Page 318 318
  • Page 319 319
  • Page 320 320
  • Page 321 321
  • Page 322 322
  • Page 323 323
  • Page 324 324
  • Page 325 325
  • Page 326 326
  • Page 327 327
  • Page 328 328
  • Page 329 329
  • Page 330 330
  • Page 331 331
  • Page 332 332
  • Page 333 333
  • Page 334 334
  • Page 335 335
  • Page 336 336
  • Page 337 337
  • Page 338 338
  • Page 339 339
  • Page 340 340
  • Page 341 341
  • Page 342 342
  • Page 343 343
  • Page 344 344
  • Page 345 345
  • Page 346 346
  • Page 347 347
  • Page 348 348
  • Page 349 349
  • Page 350 350
  • Page 351 351
  • Page 352 352
  • Page 353 353
  • Page 354 354
  • Page 355 355
  • Page 356 356
  • Page 357 357
  • Page 358 358
  • Page 359 359
  • Page 360 360
  • Page 361 361
  • Page 362 362
  • Page 363 363
  • Page 364 364
  • Page 365 365
  • Page 366 366
  • Page 367 367
  • Page 368 368
  • Page 369 369
  • Page 370 370
  • Page 371 371
  • Page 372 372
  • Page 373 373
  • Page 374 374
  • Page 375 375
  • Page 376 376
  • Page 377 377
  • Page 378 378
  • Page 379 379
  • Page 380 380
  • Page 381 381
  • Page 382 382
  • Page 383 383
  • Page 384 384
  • Page 385 385
  • Page 386 386
  • Page 387 387
  • Page 388 388
  • Page 389 389
  • Page 390 390
  • Page 391 391
  • Page 392 392
  • Page 393 393
  • Page 394 394
  • Page 395 395
  • Page 396 396
  • Page 397 397
  • Page 398 398
  • Page 399 399
  • Page 400 400
  • Page 401 401
  • Page 402 402
  • Page 403 403
  • Page 404 404
  • Page 405 405
  • Page 406 406
  • Page 407 407
  • Page 408 408
  • Page 409 409
  • Page 410 410
  • Page 411 411
  • Page 412 412
  • Page 413 413
  • Page 414 414
  • Page 415 415
  • Page 416 416
  • Page 417 417
  • Page 418 418
  • Page 419 419
  • Page 420 420
  • Page 421 421
  • Page 422 422
  • Page 423 423
  • Page 424 424
  • Page 425 425
  • Page 426 426
  • Page 427 427
  • Page 428 428
  • Page 429 429
  • Page 430 430
  • Page 431 431
  • Page 432 432
  • Page 433 433
  • Page 434 434
  • Page 435 435
  • Page 436 436
  • Page 437 437
  • Page 438 438
  • Page 439 439
  • Page 440 440
  • Page 441 441
  • Page 442 442
  • Page 443 443
  • Page 444 444
  • Page 445 445
  • Page 446 446
  • Page 447 447
  • Page 448 448
  • Page 449 449
  • Page 450 450
  • Page 451 451
  • Page 452 452
  • Page 453 453
  • Page 454 454
  • Page 455 455
  • Page 456 456
  • Page 457 457
  • Page 458 458
  • Page 459 459
  • Page 460 460
  • Page 461 461
  • Page 462 462
  • Page 463 463
  • Page 464 464
  • Page 465 465
  • Page 466 466
  • Page 467 467
  • Page 468 468
  • Page 469 469
  • Page 470 470
  • Page 471 471
  • Page 472 472
  • Page 473 473
  • Page 474 474
  • Page 475 475
  • Page 476 476
  • Page 477 477
  • Page 478 478
  • Page 479 479
  • Page 480 480
  • Page 481 481
  • Page 482 482
  • Page 483 483
  • Page 484 484
  • Page 485 485
  • Page 486 486
  • Page 487 487
  • Page 488 488
  • Page 489 489
  • Page 490 490
  • Page 491 491
  • Page 492 492
  • Page 493 493
  • Page 494 494
  • Page 495 495
  • Page 496 496
  • Page 497 497
  • Page 498 498
  • Page 499 499
  • Page 500 500
  • Page 501 501
  • Page 502 502
  • Page 503 503
  • Page 504 504
  • Page 505 505
  • Page 506 506
  • Page 507 507
  • Page 508 508
  • Page 509 509
  • Page 510 510
  • Page 511 511
  • Page 512 512
  • Page 513 513
  • Page 514 514
  • Page 515 515
  • Page 516 516
  • Page 517 517
  • Page 518 518
  • Page 519 519
  • Page 520 520
  • Page 521 521
  • Page 522 522
  • Page 523 523
  • Page 524 524
  • Page 525 525
  • Page 526 526
  • Page 527 527
  • Page 528 528
  • Page 529 529
  • Page 530 530
  • Page 531 531
  • Page 532 532
  • Page 533 533
  • Page 534 534
  • Page 535 535
  • Page 536 536
  • Page 537 537
  • Page 538 538
  • Page 539 539
  • Page 540 540
  • Page 541 541
  • Page 542 542
  • Page 543 543
  • Page 544 544
  • Page 545 545
  • Page 546 546
  • Page 547 547
  • Page 548 548
  • Page 549 549
  • Page 550 550
  • Page 551 551
  • Page 552 552
  • Page 553 553
  • Page 554 554
  • Page 555 555
  • Page 556 556
  • Page 557 557
  • Page 558 558
  • Page 559 559
  • Page 560 560
  • Page 561 561
  • Page 562 562
  • Page 563 563
  • Page 564 564
  • Page 565 565
  • Page 566 566
  • Page 567 567
  • Page 568 568
  • Page 569 569
  • Page 570 570
  • Page 571 571
  • Page 572 572
  • Page 573 573
  • Page 574 574
  • Page 575 575
  • Page 576 576
  • Page 577 577
  • Page 578 578
  • Page 579 579
  • Page 580 580
  • Page 581 581
  • Page 582 582
  • Page 583 583
  • Page 584 584
  • Page 585 585
  • Page 586 586
  • Page 587 587
  • Page 588 588
  • Page 589 589
  • Page 590 590
  • Page 591 591
  • Page 592 592
  • Page 593 593
  • Page 594 594
  • Page 595 595
  • Page 596 596
  • Page 597 597
  • Page 598 598
  • Page 599 599
  • Page 600 600
  • Page 601 601
  • Page 602 602
  • Page 603 603
  • Page 604 604
  • Page 605 605
  • Page 606 606
  • Page 607 607
  • Page 608 608
  • Page 609 609
  • Page 610 610
  • Page 611 611
  • Page 612 612
  • Page 613 613
  • Page 614 614
  • Page 615 615
  • Page 616 616
  • Page 617 617
  • Page 618 618
  • Page 619 619
  • Page 620 620
  • Page 621 621
  • Page 622 622
  • Page 623 623
  • Page 624 624
  • Page 625 625
  • Page 626 626
  • Page 627 627
  • Page 628 628
  • Page 629 629
  • Page 630 630
  • Page 631 631
  • Page 632 632
  • Page 633 633
  • Page 634 634
  • Page 635 635
  • Page 636 636
  • Page 637 637
  • Page 638 638
  • Page 639 639
  • Page 640 640
  • Page 641 641
  • Page 642 642
  • Page 643 643
  • Page 644 644
  • Page 645 645
  • Page 646 646
  • Page 647 647
  • Page 648 648
  • Page 649 649
  • Page 650 650
  • Page 651 651
  • Page 652 652
  • Page 653 653
  • Page 654 654
  • Page 655 655
  • Page 656 656
  • Page 657 657
  • Page 658 658
  • Page 659 659
  • Page 660 660
  • Page 661 661
  • Page 662 662
  • Page 663 663
  • Page 664 664
  • Page 665 665
  • Page 666 666
  • Page 667 667
  • Page 668 668
  • Page 669 669
  • Page 670 670
  • Page 671 671
  • Page 672 672
  • Page 673 673
  • Page 674 674
  • Page 675 675
  • Page 676 676
  • Page 677 677
  • Page 678 678
  • Page 679 679
  • Page 680 680
  • Page 681 681
  • Page 682 682
  • Page 683 683
  • Page 684 684
  • Page 685 685
  • Page 686 686
  • Page 687 687
  • Page 688 688
  • Page 689 689
  • Page 690 690
  • Page 691 691
  • Page 692 692
  • Page 693 693
  • Page 694 694
  • Page 695 695
  • Page 696 696
  • Page 697 697
  • Page 698 698
  • Page 699 699
  • Page 700 700
  • Page 701 701
  • Page 702 702
  • Page 703 703
  • Page 704 704
  • Page 705 705
  • Page 706 706
  • Page 707 707
  • Page 708 708
  • Page 709 709
  • Page 710 710
  • Page 711 711
  • Page 712 712
  • Page 713 713
  • Page 714 714
  • Page 715 715
  • Page 716 716
  • Page 717 717
  • Page 718 718
  • Page 719 719
  • Page 720 720
  • Page 721 721
  • Page 722 722
  • Page 723 723
  • Page 724 724
  • Page 725 725
  • Page 726 726
  • Page 727 727
  • Page 728 728
  • Page 729 729
  • Page 730 730
  • Page 731 731
  • Page 732 732
  • Page 733 733
  • Page 734 734
  • Page 735 735
  • Page 736 736
  • Page 737 737
  • Page 738 738
  • Page 739 739
  • Page 740 740
  • Page 741 741
  • Page 742 742
  • Page 743 743
  • Page 744 744
  • Page 745 745
  • Page 746 746
  • Page 747 747
  • Page 748 748
  • Page 749 749
  • Page 750 750
  • Page 751 751
  • Page 752 752
  • Page 753 753
  • Page 754 754
  • Page 755 755
  • Page 756 756
  • Page 757 757
  • Page 758 758
  • Page 759 759
  • Page 760 760
  • Page 761 761
  • Page 762 762
  • Page 763 763
  • Page 764 764
  • Page 765 765
  • Page 766 766
  • Page 767 767
  • Page 768 768
  • Page 769 769
  • Page 770 770
  • Page 771 771
  • Page 772 772
  • Page 773 773
  • Page 774 774
  • Page 775 775
  • Page 776 776
  • Page 777 777
  • Page 778 778
  • Page 779 779
  • Page 780 780
  • Page 781 781
  • Page 782 782
  • Page 783 783
  • Page 784 784
  • Page 785 785
  • Page 786 786
  • Page 787 787
  • Page 788 788
  • Page 789 789
  • Page 790 790
  • Page 791 791
  • Page 792 792
  • Page 793 793
  • Page 794 794
  • Page 795 795
  • Page 796 796
  • Page 797 797
  • Page 798 798
  • Page 799 799
  • Page 800 800
  • Page 801 801
  • Page 802 802
  • Page 803 803
  • Page 804 804
  • Page 805 805
  • Page 806 806
  • Page 807 807
  • Page 808 808
  • Page 809 809
  • Page 810 810
  • Page 811 811
  • Page 812 812
  • Page 813 813
  • Page 814 814
  • Page 815 815
  • Page 816 816
  • Page 817 817
  • Page 818 818
  • Page 819 819
  • Page 820 820
  • Page 821 821
  • Page 822 822
  • Page 823 823
  • Page 824 824
  • Page 825 825
  • Page 826 826
  • Page 827 827
  • Page 828 828
  • Page 829 829
  • Page 830 830
  • Page 831 831
  • Page 832 832
  • Page 833 833
  • Page 834 834
  • Page 835 835
  • Page 836 836
  • Page 837 837
  • Page 838 838
  • Page 839 839
  • Page 840 840
  • Page 841 841
  • Page 842 842
  • Page 843 843
  • Page 844 844
  • Page 845 845
  • Page 846 846
  • Page 847 847
  • Page 848 848
  • Page 849 849
  • Page 850 850
  • Page 851 851
  • Page 852 852
  • Page 853 853
  • Page 854 854
  • Page 855 855
  • Page 856 856
  • Page 857 857
  • Page 858 858
  • Page 859 859
  • Page 860 860
  • Page 861 861
  • Page 862 862
  • Page 863 863
  • Page 864 864
  • Page 865 865
  • Page 866 866
  • Page 867 867
  • Page 868 868
  • Page 869 869
  • Page 870 870
  • Page 871 871
  • Page 872 872
  • Page 873 873
  • Page 874 874
  • Page 875 875
  • Page 876 876
  • Page 877 877
  • Page 878 878
  • Page 879 879
  • Page 880 880
  • Page 881 881
  • Page 882 882
  • Page 883 883
  • Page 884 884
  • Page 885 885
  • Page 886 886
  • Page 887 887
  • Page 888 888
  • Page 889 889
  • Page 890 890
  • Page 891 891
  • Page 892 892
  • Page 893 893

MySQL MYSQL 4.1.1 Le manuel du propriétaire

Taper
Le manuel du propriétaire