Un client MySQL sous Unix peut se connecter au serveur
mysqld
de deux fa¸ons différentes :
sockets Unix, qui se connectent via un fichier du système de
fichiers (/tmp/mysqld.sock
par défaut) ou
TCP/IP, qui se connecte via un port. Les sockets Unix sont plus
rapides que TCP/IP mais ne peuvent être utilisée que pour des
connexions locales. Les sockets sont utilisées si vous ne
spécifiez pas de nom d'hôte ou si vous spécifiez le nom
d'hôte spécial localhost
.
Sur Windows, si le serveur mysqld
tourne sur
9x/Me, vous ne pouvez vous connecter qu'avec TCP/IP. Si le
serveur tourne sur NT/2000/XP et que mysqld a été démarré
avec l'option --enable-named-pipe
, vous pouvez
aussi vous connectez avec un tunnel nommé. Son nom est MySQL.
Si vous ne spécifiez pas un nom d'hôte lors de la connexion à
mysqld
, un client MySQL essayera d'abord de
se connecter au tunnel nommé, et si cela ne marche pas il se
connectera au port TCP/IP. Vous pouvez forcer l'utilisation des
tunnels nommés sous Windows en utilisant .
en tant que nom d'hôte.
L'erreur (2002) Can't connect to ...
signifie
généralement qu'il n'y a aucun serveur MySQL qui tourne sur la
machine ou que vous utiliser un mauvais fichier de socket ou un
port erroné quand vous essayez de vous connecter au serveur
mysqld
.
Commencez par vérifier (en utilisant ps
ou
le gestionnaire de tâches sous Windows) qu'il y a un processus
nommé mysqld
sur votre serveur ! S'il n'y
en a aucun, vous devrez en démarrer un. See
Section 2.5.2.3, « Problèmes de démarrage du serveur MySQL ».
Si un processus mysqld
est actif, vous pouvez
tester le serveur avec l'une des connexions suivantes (le port
et le chemin vers la socket peuvent être différents chez vous,
bien sûr) :
shell>mysqladmin version
shell>mysqladmin variables
shell>mysqladmin -h `hostname` version variables
shell>mysqladmin -h `hostname` --port=3306 version
shell>mysqladmin -h 'ip de votre hôte' version
shell>mysqladmin --socket=/tmp/mysql.sock version
Notez l'utilisation des guillemets obliques plutôt que les
simples avec la commande hostname
; cela
provoque la substitution de hostname
par la
valeur courante du nom d'hôte de la machine dans la commande
mysqladmin
.
Voilà quelques raisons pouvant entraîner l'erreur
Can't connect to local MySQL server
:
mysqld
ne fonctionne pas.
Vous utilisez un système qui utilise les pthreads MIT. Si
vous utilisez un système qui n'a pas le support natif des
threads, mysqld
utilises le paquet
MIT-pthreads
. See
Section 2.1.1, « Systèmes d'exploitation supportés par MySQL ». Toutefois, toutes les versions
de MIT-pthreads
ne supportent pas les
sockets Unix. Sur un système qui ne supporte pas les
sockets vous devez toujours spécifier le nom d'hôte
explicitement lors de la connexion au serveur. Utilisez
cette commande pour vérifier la connexion au serveur :
shell> mysqladmin -h `hostname` version
Quelqu'un a effacé le fichier de socket Unix que
mysqld
utilise
(/tmp/mysqld.sock
par défaut). Vous
avez peut-être une tâche cron
qui
efface la socket MySQL (par exemple, une tâche qui supprime
les anciens fichiers du dossier /tmp
).
Vous pouvez toujours exécuter mysqladmin
version
et vérifier que la socket que
mysqladmin
tente d'utiliser existe
vraiment. La solution dans ce cas est de modifier la tâche
cron
pour qu'elle n'efface plus
mysqld.sock
ou de placer la socket
quelque part d'autre. See
Section A.4.5, « Comment protéger ou changer le fichier socket
/tmp/mysql.sock
».
Vous avez démarré mysqld
avec l'option
--socket=/chemin/vers/socket
. Si vous
changez le chemin vers la socket vous devez aussi en
notifier les clients. Vous pouvez le faire en fournissant le
chemin vers la socket en argument au client. See
Section A.4.5, « Comment protéger ou changer le fichier socket
/tmp/mysql.sock
».
Vous utilisez Linux et un thread s'est terminé (core
dumped). Dans ce cas, vous devez aussi terminer les autres
threads mysqld
(par exemple, avec le
script mysql_zap
avant de pouvoir
démarrer un nouveau serveur MySQL. See
Section A.4.2, « Que faire si MySQL plante constamment ? ».
Vous n'avez peut-être pas les privilèges de lecture et
écriture sur le dossier contenant la socket ou sur la
socket elle-même. Dans ce cas, vous devez changer les
droits sur ce dossier / fichier ou redémarrer
mysqld
pour qu'il prenne en compte un
dossier auquel vous avec accès.
Si vous obtenez l'erreur Can't connect to MySQL server
on un_hôte
, vous pouvez essayer ce qui suit pour
trouver le problème :
Vérifiez que le serveur fonctionne en faisant
telnet votre-nom-d-hôte port-tcp-ip
et
pressez la touche Enter plusieurs fois. Si il y a un serveur
MySQL qui tourne sur ce port, vous devriez obtenir une
réponse contenant le numéro de version du serveur. Si vous
obtenez une erreur proche de telnet: Unable to
connect to remote host: Connection refused
, c'est
qu'il n'y a pas de serveur tournant sur le port donné.
Essayez de vous connecter au démon
mysqld
sur la machine locale et vérifiez
le port TCP/IP de la configuration de
mysqld
(variable port
)
avec mysqladmin variables
.
Vérifiez que votre serveur mysqld
n'est
pas configuré avec l'option
--skip-networking
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.