Je peux réussir à me connecter à MySQL à partir d'une invite DOS, mais lorsque j'essaie de me connecter depuis cygwin, tout se bloque.
$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p
Qu'est-ce qui ne va pas?
En supposant que vous ayez une version Windows native de MySQL, il existe une incompatibilité d'émulation de terminal entre les fenêtres DOS
(invite de commande) et bash
. L'invite pour mysql
ne s'affiche pas.
Pour confirmer cela, tapez une commande et retournez - cela fonctionnera probablement, mais l'invite et l'écho de la commande (ce que vous tapez) sont en train d'être perdus.
Il peut y avoir une solution de contournement dans les propriétés du système CYGWIN
ou dans bash
, mais je n’ai jamais pris le temps de résoudre celui-ci.
Je viens de découvrir ceci, et quand j'ai lu que quelqu'un a mentionné qu'il s'agissait d'une commande Windows/DOS que vous exécutiez dans cygwin, j'ai fait un which mysql
et cela m'a donné
$ which mysql
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
Alors j'ai couru le Setup.exe
de cygwin a cherché "mysql" et a installé le dernier "client de mysql". which mysql
ressemble maintenant à:
$ which mysql
/usr/bin/mysql
Et la commande MySQL fonctionne dans cygwin :)
Bien que ce soit une vieille question, il serait bien d’avoir la réponse exacte ici, car des gens (comme moi) pourraient encore tomber sur elle.
Si vous essayez d'exécuter le client MySQL depuis Cygwin, vous obtenez l'erreur suivante:
$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)
Ensuite, vous pouvez résoudre ce problème en ajoutant les options explicites -h 127.0.0.1
à la ligne de commande, comme suit:
$ mysql -u root -p -h 127.0.0.1
Mises à jour basées sur les commentaires:
Pour éviter de spécifier -h 127.0.0.1
sur la ligne de commande à chaque fois que vous vous connectez, vous pouvez ajouter:
[client]
Host=127.0.0.1
dans le fichier /etc/my.cnf
Sur certaines installations de Cygwin, il peut être insuffisant de spécifier l'hôte avec -h
. Si c'est le cas, essayez aussi de spécifier:
--protocol=tcp
ou ajouter
protocol=tcp
dans le fichier de configuration.
Les autres réponses n'ont pas les détails suivants key:
Cygwin a deux coquilles:
c:\cygwin\bin\mintty.exe
c:\cygwin\Cygwin.bat
(qui lance c:\cygwin\bin\bash.exe
)Win32 MySQL peut écrire correctement sur # 2, mais pas # 1, car MySQL ne peut pas analyser stdin correctement (merci @PeterNore)
Vous voulez savoir si vous utilisez Win32 MySQL? Utilisez which
, par exemple.
$ which mysql
/cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin/mysql
Bonus: Guide Cygwin pour surmonter les problèmes de trajectoire ( @Dustin )
Exécutez bash à partir du fichier exécutable cmd.exe, puis mysql fonctionnera dans bash.
Cela exécutera bash sous l’environnement Windows cmd.exe et, lorsque vous essayez d’exécuter mysql, il s’exécutera comme prévu. Cela fonctionne sous Windows 7 mais n'a été testé dans aucune autre version.
J'ai posté une solution/solution de contournement ici:
La touche Entrée n'est parfois pas reconnue dans les applications Windows sous cygwin
Ensuite, MySQL peut être exécuté sans problème.
La réponse de Svend Hansen est la bonne:
Installer les fichiers du serveur Windows mysql (à partir de mysql-5.5.25-win32.msi, par exemple)
Installer le client mysql Cygwin avec le programme d'installation de cygwin (setup.exe)
Connectez-vous à votre serveur dans une fenêtre cygwin en utilisant le client cygwin "mysql -u [utilisateur] -p [mot de passe] -h [hôte]", dans mon cas "mysql -uroot -pXXXX -h127.0.0.1"
Je pense que lorsque la question a été posée, la configuration de cygwin ne fournissait pas de composants mysql, ce qui est résolu maintenant.
Trouvé cette question aujourd'hui 2018-03-18 à la recherche de réponses à
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2 "No such file or directory")
Le fichier /etc/my.conf
référence les fichiers de configuration dans /etc/my.cnf.d
J'ai ajouté ceci à /etc/my.cnf.d/client.cnf
:
[client]
Host=127.0.0.1
protocol=tcp
Après cela, j’ai pu accéder à l’instance locale MySQL de Windows à partir d’un terminal cygwin en utilisant mysql -u root -p
Réinstallez cygwin et, lors de la réinstallation, recherchez mysql dans des packages, installez le client mysql, puis tout fonctionnera correctement.
Althoug Réponse de Svend Hansen a quelques points, une autre chose est le PATH dans les variables d'environnement - si le chemin vers mysql est avant celui de cygwin
which mysql
montrera
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
sinon, le client cygwin sera affiché.
Comme référence, Wikipedia dit:
Certains programmes peuvent ajouter leur répertoire au front de PATH le contenu de la variable pendant l'installation, pour accélérer le processus de recherche et/ou remplacer les commandes du système d'exploitation.
Installer l'application cliente mysql
créer un alias dans un fichier .bashrc
alias mysql = 'mysql -h 127.0.0.1'
Maintenant vous pouvez vous connecter à mysql
mysql -u utilisateur -p
J'ai créé un correctif semi-correctif qui me satisfait .J'ai lancé cygwin.bat dans cmd.exe, puis en tapant mysql - tout s'est bien passé.
J'ai réalisé juste là que le problème était mentholé.
Solution facile? Télécharger Console2 , et sous les paramètres que vous pouvez pointerit vers le shell cygwin. Redémarrez Console2, lancez mysql et la sortie Apparaît.
Ceci est de toute façon avantageux, car Console2 a une interface/personnalisation plus robuste que Mintty. J'aime beaucoup les options de transparence et de mappage des couleurs.
Avertissement: Ce qui suit a résolu ce problème pour moi sous MinTTY sous MinGW/MSYS. D'après les recherches, je pense que cette même cause fondamentale affecte également Cygwin.
La réponse est publiée ici: https://stackoverflow.com/a/23164362/1034436
En un mot, vous aurez besoin de préfixer votre commande mysql
avec le console.exe
de winpty (ou d’avoir des alias qui le feront). Cette solution fonctionnait avec les exécutables MySQL native Windows et non avec une version spéciale de cygwin/mingw. Vous devez cependant compiler Winpty, mais c’était simple, sans douleur et fonctionnait conformément à leur documentation.
Remarque: Cela a également résolu mon problème avec plusieurs autres applications de console Windows natives, à savoir Python et Mercurial avec OpenSSH.
Faites ceci: