2.2.1 Installer MySQL sous Windows
2.2 Installation standard rapide de MySQL
2 Installer MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Prérequis système sur Windows . Installation d'une distribution binaire sur Windows . Préparation de l'environnement MySQL de Windows . Choisir un serveur Windows . Démarrer le serveur pour la première fois . Lancer MySQL en ligne de commande . Lancer MySQL comme un service Windows . Faire fonctionner MySQL sous Windows ->MySQL pour Windows face à MySQL pour Unix
|
2.2.1.9 MySQL pour Windows face à MySQL pour Unix
MySQL pour Windows a prouvé qu'il était très stable. Cette version de
MySQL a les mêmes fonctionnalités que la version Unix, a quelques exceptions :
-
Windows 95 et les threads
-
Windows 95 perd environs 200 octets de mémoire central lors de la création de chaque thread.
Chaque connexion MySQL crée un nouveau thread, ce qui fait qu'il n'est pas recommandé
d'exécuter
mysqld
pour des durées longues sur Windows 95 si votre serveur
gère de nombreuses connexions. Les autres versions de Windows ne souffrent pas
du même problème.
-
Nombre limités de ports de connexions
-
Les systèmes Windows disposent d'environs 4,000 pour les connexions clientes,
et après connexion, cela prend de 2 à 4 minutes avant qu'un port soit
de nouveau utilisable. Dans des situations où les clients se connectent
et se déconnectent à haute vitesse, il est possible que tous les ports soient
utilisés, avant que les anciens ports ne redeviennent utilisables. Lorsque cela arrive,
le serveur semblera inaccessible, même s'il fonctionne bien. Notez que des ports peuvent
aussi être utilisées par d'autres applications, ce qui réduit encore le nombre
de ports disponibles pour MySQL.
-
Lectures concurrentes
-
MySQL dépends des fonctions
pread()
et
pwrite()
pour être capable
de mêler des
INSERT
et des
SELECT
. Actuellement, nous utilisons les
mutexes
pour émuler les fonctions
pread()
/
pwrite()
. Nous allons,
à long terme, remplacer ce niveau d'interface par une interface virtuelle
de façon à ce que nous puissions utiliser l'interface
readfile()
/
writefile()
de
Windows NT/2000/XP
pour gagner de la vitesse.
L'implémentation courante limite le nombre de fichiers ouverts par MySQL
à 1024, ce qui signifie que vous ne pouvez pas utiliser d'aussi nombreux threads
concurrents sur
Windows NT/2000/XP
que sur Unix.
-
Blocking read
-
MySQL utilise une lecture bloquée pour chaque connexion.
Cela signifie que :
-
Une connexion ne sera pas déconnectée automatiquement après 8 heures d'inactivité,
comme c'est le cas sous Unix.
-
Si une connexion se bloque, il est impossible de la détruire sans tuer
MySQL.
-
mysqladmin kill
ne fonctionne pas sur une connexion endormie.
-
mysqladmin shutdown
ne peut pas s'exécuter tant qu'il y a des
connexions qui dorment.
Nous envisageons de corriger ce problème, lorsque les développeurs Windows
auront fourni un palliatif.
-
DROP DATABASE
-
Vous ne pouvez pas détruire une base qui est utilisée par un autre thread.
-
Interrompre MySQL depuis le gestionnaire de tâches
-
Vous ne pouvez pas tuer MySQL depuis le gestionnaire de tâche ou avec un
utilitaire d'extinction de Windows 95. Vous devez l'éteindre avec
mysqladmin shutdown
.
-
Noms sensibles à la casse
-
Les noms de fichiers sont insensibles à la casse sous Windows, ce qui fait que
les noms de tables et de bases ne sont pas sensibles à la casse pour
MySQL sur Windows. La seule restriction est que les noms de tables et de
bases doivent être donnés avec même casse dans le nom (tout en majuscules,
ou en minuscules). Identifier Case Sensitivity .
-
Le caractère
'\'
-
Les composants d'un chemin sont séparés par le caractère
'\'
sous Windows,
qui est aussi le caractère de protection de MySQL. Si vous utilisez
la commande
LOAD DATA INFILE
ou
SELECT ... INTO OUTFILE
, vous devez
doubler le caractère
'\'
:
mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
|
Alternativement, vous pouvez utiliser les noms de fichiers au format Unix, avec
le caractère
'/'
:
mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
|
-
Problèmes avec les pipes
-
Les pipes ne fonctionnent pas de manière fiables depuis la ligne de commande
Windows. Si le pipe reçoit un caractère
^Z
/
CHAR(24)
, Windows va
croire qu'il atteind la fin du fichier et arrête le programme.C'est un problème, notamment lorsque vous essayez d'utiliser le log
binaire de cette manière :
mysqlbinlog binary-log-name | mysql --user=root
|
Si vous rencontrez un problème lors de l'utilisation du log, et que vous
pensez que c'est à cause du caractère
^Z
/
CHAR(24)
,
vous pouvez utiliser le palliatif suivant :
mysqlbinlog binary-log-file --result-file=/tmp/bin.sql mysql --user=root --execute "source /tmp/bin.sql"
|
Cette dernière commande peut aussi être utilisée pour lire fiablement
tout fichier SQL qui contient des données binaires.
-
L'erreur
Can't open named pipe
-
Si vous utilisez MySQL 3.22 sous
NT
avec les derniers clients mysql,
vous allez obtenir cette erreur :
error 2017: can't open named pipe to host: . pipe...
|
Ceci est dû au fait que les versions modernes de MySQL utilisent des pipes
nommés sous
NT
, par défaut. Pour éviter cette erreur, vous devez utiliser
l'option
--host=localhost
sur les nouveaux clients, ou bien créer le
fichier d'options
C:\my.cnf
, qui contiendra les informations suivantes :
Depuis la version 3.23.50, les pipes nommés sont les seuls activés si
mysqld
est démarré avec
--enable-named-pipe
.
-
Erreur
Access denied for user
-
Si vous rencontrez l'erreur
Access denied for user: 'utilisateur@unknown' to database 'mysql'
lors de l'accès au serveur MySQL sur la même machine, cela signifie
que MySQL ne peut résoudre proprement votre nom d'hôte.
Pour corriger cela, vous devriez créer un fichier
\windows\hosts
dans
l'information suivante :
-
ALTER TABLE
-
Lorsque vous exécutez la commande
ALTER TABLE
, la table est verrouillé,
empêchant les autres threads d'y accéder. Cela est lié au fait que sous Windows,
vous ne pouvez pas effacer un fichier qui est en cours d'utilisation par d'autres
threads : à l'avenir, vous pourrions trouver un moyen de contourner ce problème.
-
DROP TABLE
-
La commande
DROP TABLE
sur une table qui est utilisée dans le cadre
d'un
MERGE
ne fonctionne pas sous Windows, car le gestionnaire de
MERGE
garde la carte des tables cachée de la couche supérieure de
MySQL. Comme Windows ne vous autorise pas à effacer des fichiers qui sont ouverts,
vous devez d'abord vider de la mémoire toutes les tables du
MERGE
(avec la commande
FLUSH TABLES
) puis effacer la table
MERGE
avant
d'effacer les tables. Nous allons corriger cela lorsque nous introduirons
la notion de
VIEW
s.
-
DATA DIRECTORY
et
INDEX DIRECTORY
-
Les directives
DATA DIRECTORY
et
INDEX DIRECTORY
de
CREATE TABLE
sont ignorées sous Windows, car Windows ne supporte pas
les liens symboliques.
Voici quelques problèmes connus et pas encore corrigés, si jamais quelqu'un
souhaite nous aider sur la version Windows :
-
Ajouter des icônes pour le démarrage et l'arrêt de MySQL, dans
l'installateur.
-
Il serait vraiment pratique de pouvoir arrêter le processus
mysqld
depuis le gestionnaire de tâches. Pour le moment, il faut passer par
mysqladmin shutdown
.
-
Le port de
readline
sur Windows pour pouvoir l'utiliser avec l'outil de ligne
de commande
mysql
.
-
Des versions graphiques des clients standards MySQL (
mysql
,
mysqlshow
,
mysqladmin
et
mysqldump
) seraient bien.
-
Il serait bien si les fonctions de lecture et d'écriture sur les sockets de
net.c
pouvaient être interrompues. Cela rendrait possible l'arrêt
des threads en court avec
mysqladmin kill
sous Windows.
-
Ajouter des macros pour utiliser les méthodes rapides
d'incrément/décrément compatibles
avec les threads, fourni par Windows.
|