2008-12-01 25 views
52

Puedo conectarme exitosamente a MySQL desde un prompt de DOS, pero cuando intento conectarme desde cygwin, simplemente cuelga.conectando a mysql desde cygwin

$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p 

¿Qué problema?

+0

Acabo de encontrarme con este problema. Todavía allí después de 9 años. MySQL Ver 14.14 Distrib 5.7.18, para Win64 (x86_64). Cygwin 2.8.0 (0.309/5/3) x86_64. – bostaf

Respuesta

15

Suponiendo que tiene una versión nativa de Windows de MySQL, existe una incompatibilidad de emulación de terminal entre DOS (símbolo del sistema) de Windows y bash. La solicitud de mysql no se muestra.

Para confirmar esto, escriba un comando y vuelva; probablemente funcione, pero el aviso y el eco del comando (lo que está escribiendo) se está perdiendo.

Puede haber una solución en las propiedades del sistema CYGWIN o en bash, pero nunca me he tomado el tiempo para trabajar con esta.

+0

http://bugs.mysql.com/bug.php?id=58917 –

+1

esto ha sido un problema durante diez años: http://lists.mysql.com/win32/6625 –

+0

Esto también parece suceder cuando se ejecuta Telnet. – Chloe

4

Run fiesta del ejecutable cmd.exe y luego MySQL trabajar dentro de bash.

  1. Cree un acceso directo para cmd.exe en su escritorio.
  2. Abra las propiedades para el acceso directo y cambie el directorio de inicio al directorio cygwin bin (normalmente C: \ cygwin \ bin).
  3. Agregue "/ c bash.exe" al final del comando en el parámetro de destino.

Esto ejecutará bash en el entorno Windows cmd.exe y cuando intente ejecutar mysql se ejecutará como era de esperar. Esto funciona en Windows 7 pero no ha sido probado en ninguna otra versión.

+0

(-1 retraído porque el usuario es nuevo en SO). El OP puede comenzar bash bajo Windows; su solución no agrega ninguna información al acceso directo básico proporcionado por una instalación estándar de Cygwin. Y no responde su pregunta: ¿qué hay de malo en su forma de llamar a MySQL? –

+0

¡Esto funciona, increíblemente bien! ¡Gracias! –

+0

Esto funcionó para mí en Windows 8. ¡Gracias! – Hari

65

me encontré con esto, y cuando leí mención de alguien de que sea una ventana de comandos/DOS que se ejecuta en cygwin hice un which mysql y que me dio:

$ which mysql 
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql 

Entonces me encontré con el cygwin Setup.exe buscó "mysql" e instaló el último "cliente mysql". Ahora which mysql parece:

$ which mysql 
/usr/bin/mysql 

Y funciona el comando de MySQL en cygwin :)

Aunque se trata de una cuestión de edad, sería bueno tener la respuesta real aquí, ya que la gente (como yo) podría todavía tropezar con eso.

Si sus intentos de ejecutar el cliente de MySQL desde Cygwin devolver el siguiente error:

$ mysql -u root -p 
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2) 

Entonces se puede solucionar mediante la adición de las explícitas -h 127.0.0.1 opciones para la línea de comandos, como en:

$ mysql -u root -p -h 127.0.0.1 

actualizaciones basadas en los comentarios:

de no especificar -h 127.0.0.1 en el comando lin e cada vez que se conecte, se puede añadir:

[client] 
host=127.0.0.1 

al archivo /etc/my.cnf

En algunas instalaciones de Cygwin, que especifica el host con -h podría no ser suficiente. Si es así, trate también especificando:

--protocol=tcp 

o añadir

protocol=tcp 

al archivo de configuración.

+1

¡Seguí intentando usar el zócalo, 127.0.0.1 hizo el truco! Gracias. – Screenack

+10

Para guardar poner '-h 127.0.0.1' cada vez que se conecta, puede crear un archivo de configuración de MySQL en'/etc/my.cnf', y poner; '[cliente] \ n host = 127.0.0.1'. El cliente MySQL usará la red de forma predeterminada a continuación. – sixones

+2

En lo que respecta a MySQL, 'localhost'! =' 127.0.0.1'. El primero indica que una conexión debe hacerse a través de un socket UNIX, que el servidor nativo de Windows, obviamente, no es compatible. Este último fuerza una conexión de red, de ahí la diferencia. – Yaakov

2
  1. Coloque el directorio cygwin bin en la variable env de ruta.
  2. Uso ventana de comandos ejecutando cmd
  3. -l Run golpe en la ventana de cmd

Entonces MySQL se puede ejecutar sin problema.

1

respuesta de Svend Hansen es la correcta:

  • instalar Windows los archivos del servidor MySQL (de mysql-5.5.25-win32.msi por ejemplo)

  • instalar Cygwin cliente mysql con el instalador cygwin (setup.exe)

  • Conéctese a su servidor en una ventana de cygwin utilizando el cliente cygwin "mysql -u [usuario] -p [Contraseña] -h [host]", en mi caso "mysql -uroot -pXXXX - h127.0.0.1 "

Creo que cuando se publicó la pregunta, la configuración de cygwin no proporcionó los componentes de mysql, lo cual se resuelve ahora.

0

He creado una semi-solución para esto que me satisface. Ejecuté cygwin.bat en cmd.exe, y luego escribí mysql: todo funcionó bien.

Me di cuenta de que el problema era minty.

¿Solución fácil? Descargue Console2, y en la configuración puede señalar al shell cygwin. Reinicie Console2, ejecute mysql y aparece la salida .

Esto es ventajoso de todos modos, porque Console2 tiene una interfaz/personalización más robusta que Mintty.Me gustan mucho las opciones de transparencia y mapeo de color.

6

Otras respuestas carecen de los detalles siguientes clave:

Cygwin tiene dos cáscaras:

  1. defecto: c:\cygwin\bin\mintty.exe
  2. básica: c:\cygwin\Cygwin.bat (que lanza c:\cygwin\bin\bash.exe)

Los Win32 MySQL puede escribir correctamente en el n. ° 2, pero no # 1, porque Win32 MySQL cannot probe stdin properly (gracias @PeterNore)

¿Desea saber si está utilizando Win32 MySQL? Use which, p. Ej.

$ which mysql 
/cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin/mysql 

Bono: Cygwin guide to overcoming path problems (thanks @Dustin)

0

hacer esto:

  1. simplemente copiar ur mysql.exe de C: \ Archivos de programa \ MySQL \ MySQL Server 5.5 \ bin
  2. pegue este mysql.exe en C: \ cygwin \ usr \ local \ bin
  3. ahora ejecute mysql, será
0

Althoug Svend Hansen answer tiene algunos puntos, otra cosa es el camino en las variables de entorno - si la ruta a MySQL es antes que la de cygwin

which mysql 

mostrará

/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql 

de lo contrario, mostrará el cliente cygwin.

Como referencia Wikipedia dice:

Some programs may add their directory to the front of the PATH variable's content during installation, to speed up the search process and/or override OS commands.

0

de responsabilidad: Los siguientes resolvió este problema para mí bajo MinTTY en MinGW/MSYS. De la investigación, creo que esta misma causa raíz también afecta a Cygwin.

respuesta está publicada aquí: https://stackoverflow.com/a/23164362/1034436

En pocas palabras, tendrá que anteponer el comando mysql con winpty de console.exe (o tienen alias que lo hace). Esta solución funcionó con nativos ejecutables de Windows MySQL y no una versión especial de cygwin/mingw. Sin embargo, tienes que compilar winpty, pero eso fue simple e indolora, y funcionó según su documentación para mí.

Nota: Esto también resolvió mi problema con muchas otras aplicaciones de consola nativas de Windows, concretamente Python y Mercurial con OpenSSH.

0
  1. Descargar Cygwin
  2. Instalar aplicación cliente mysql

  3. crear un alias en el archivo .bashrc

    MySQL alias = 'mysql -h 127.0.0.1'

  4. ejecutar fuente. bashrc

Ahora puede conectarse a mysql

mysql -u usuario -p

0

cygwin Volver a instalar y durante la búsqueda de reinstalación para MySQL en paquetes, instalar el cliente de MySQL y luego de que funcionaría bien.