我可以从DOS提示符下成功连接到MySQL,但是当我尝试从cygwin连接时,它只是挂起.
$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p
怎么了?
我刚看到这个,当我读到有人提到它是一个Windows/DOS命令,你在cygwin中运行时,我做了一个which mysql
,这给了我:
$ which mysql /cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
所以我运行cygwin Setup.exe
搜索"mysql"并安装了最新的"mysql客户端".现在which mysql
看起来像:
$ which mysql /usr/bin/mysql
并且MySQL命令在cygwin中运行:)
虽然这是一个老问题,但在这里得到实际答案会很好,因为人们(像我一样)可能仍会偶然发现它.
如果您尝试从Cygwin运行MySQL客户端返回以下错误:
$ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)
然后,您可以通过向-h 127.0.0.1
命令行添加显式选项来修复它,如:
$ mysql -u root -p -h 127.0.0.1
基于评论的更新:
为避免-h 127.0.0.1
每次连接时在命令行上指定,您可以添加:
[client] host=127.0.0.1
到文件 /etc/my.cnf
在Cygwin的某些安装中,指定主机-h
可能不够.如果是这样,请尝试指定:
--protocol=tcp
或添加
protocol=tcp
到配置文件.
假设你有一个MySQL的本机Windows版本,那么DOS
(命令提示符)窗口和之间存在终端仿真不兼容bash
.提示mysql
没有显示出来.
要确认这一点,请键入命令并返回 - 它可能会起作用,但命令的提示和回显(您正在键入的内容)会丢失.
CYGWIN
系统属性或中可能有一个解决方法bash
,但我从来没有花时间来解决这个问题.
其他答案缺少以下关键细节:
Cygwin有两个shell:
默认: c:\cygwin\bin\mintty.exe
基本:( c:\cygwin\Cygwin.bat
推出c:\cygwin\bin\bash.exe
)
Win32 MySQL可以正常写入#2,但不能#1,因为Win32 MySQL无法正确探测stdin(感谢@PeterNore)
想知道你是否使用Win32 MySQL?使用which
,例如
$ which mysql /cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin/mysql
奖励: Cygwin指导克服路径问题 (感谢@Dustin)
我在这里发布了解决方案/解决方法:
输入密钥有时在cygwin下的windows应用程序中无法识别
从cmd.exe可执行文件运行bash,然后mysql将在bash中运行.
在桌面上为cmd.exe创建快捷方式.
打开快捷方式的属性,将启动目录更改为cygwin bin目录(通常为C:\ cygwin\bin).
在目标参数的命令末尾添加"/ c bash.exe".
这将在Windows cmd.exe环境下运行bash,当您尝试运行mysql时,它将按预期执行.这在Windows 7下工作,但尚未在任何其他版本中测试过.