web-dev-qa-db-fra.com

se connecter à mysql depuis cygwin

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?

54
MCS

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.

16
Ken Gentle

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.

68
Svend Hansen

Les autres réponses n'ont pas les détails suivants key:

Cygwin a deux coquilles:

  1. Valeur par défaut: c:\cygwin\bin\mintty.exe
  2. Basic: 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 )

7
Donal Lafferty

Exécutez bash à partir du fichier exécutable cmd.exe, puis mysql fonctionnera dans bash. 

  1. Créez un raccourci pour cmd.exe sur votre bureau. 
  2. Ouvrez les propriétés du raccourci et remplacez le répertoire de démarrage par le répertoire bin de cygwin (généralement C:\cygwin\bin). 
  3. Ajoutez "/ c bash.exe" à la fin de la commande dans le paramètre target. 

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.

5
Clive Stellings
5
DustinB
  1. Mettez le répertoire cygwin bin dans la variable env du chemin. 
  2. Utilisez la fenêtre de commande en exécutant cmd
  3. Exécuter bash -l dans la fenêtre cmd

Ensuite, MySQL peut être exécuté sans problème.

2
Steve Qian

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.

1
Benoit Philippon

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

0
Ken Ingram

Réinstallez cygwin et, lors de la réinstallation, recherchez mysql dans des packages, installez le client mysql, puis tout fonctionnera correctement.

0
Praveen Kishor

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.

0
Bakudan
  1. Télécharger Cygwin
  2. Installer l'application cliente mysql

  3. créer un alias dans un fichier .bashrc

    alias mysql = 'mysql -h 127.0.0.1'

  4. exécuter la source .bashrc

Maintenant vous pouvez vous connecter à mysql

mysql -u utilisateur -p

0
Raul Romani

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.

0
ramabodhi

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.

0
martian111

Faites ceci:

  1. il suffit de copier votre fichier mysql.exe depuis C:\Program Files\MySQL\MySQL Server 5.5\bin
  2. coller ce mysql.exe dans C:\cygwin\usr\local\bin
  3. maintenant courir quel mysql, il va 
0
user2814726