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 versionshell>mysqladmin variablesshell>mysqladmin -h `hostname` version variablesshell>mysqladmin -h `hostname` --port=3306 versionshell>mysqladmin -h 'ip de votre hôte' versionshell>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.
