58

我可以从 DOS 提示符成功连接到 MySQL,但是当我尝试从 cygwin 连接时,它只是挂起。

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

怎么了?

4

14 回答 14

75

我刚遇到这个,当我读到有人提到它是你在 cygwin 中运行的 windows/DOS 命令时,我做了一个which mysql,这给了我:

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

所以我运行 cygwinSetup.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

到配置文件。

于 2012-04-03T15:43:50.303 回答
19

假设您有 MySQL 的本机 Windows 版本,DOS(命令提示符)窗口和bash. 提示mysql没有出现。

要确认这一点,请键入命令并返回 - 它可能会起作用,但命令的提示符和回显(您正在输入的内容)会丢失。

CYGWIN在sytem properties 或 in中可能有一种解决方法bash,但我从来没有花时间解决这个问题。

于 2008-12-01T03:19:48.683 回答
9

其他答案缺少以下关键细节:

Cygwin 有两个 shell:

  1. 默认:c:\cygwin\bin\mintty.exe
  2. 基本:(c:\cygwin\Cygwin.bat启动c:\cygwin\bin\bash.exe

Win32 MySQL 可以正确写入 #2,但不能正确写入#1,因为Win32 MySQL 无法正确探测标准输入(感谢@PeterNore)

想知道您是否在使用 Win32 MySQL?使用which,例如

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

奖励克服路径问题的 Cygwin 指南感谢@Dustin

于 2013-07-15T12:59:02.650 回答
5

我在这里发布了一个解决方案/解决方法:

在 cygwin 下的 Windows 应用程序中有时无法识别输入键

于 2008-12-02T17:54:08.887 回答
5

从 cmd.exe 可执行文件运行 bash,然后 mysql 将在 bash 中运行。

  1. 在桌面上为 cmd.exe 创建一个快捷方式。
  2. 打开快捷方式的属性并将启动目录更改为 cygwin bin 目录(通常为 C:\cygwin\bin)。
  3. 在目标参数中的命令末尾添加“/c bash.exe”。

这将在 windows cmd.exe 环境下运行 bash,当您尝试运行 mysql 时,它将按预期执行。这在 Windows 7 下工作,但尚未在任何其他版本中进行测试。

于 2012-01-05T13:52:13.187 回答
2
  1. 将 cygwin bin 目录放在路径环境变量中。
  2. 通过运行 cmd 使用命令窗口
  3. 在 cmd 窗口中运行 bash -l

然后MySQL可以毫无问题地运行。

于 2012-04-09T18:03:07.797 回答
1

斯文德汉森的答案是正确的:

  • 安装 windows mysql 服务器文件(例如从 mysql-5.5.25-win32.msi )

  • 使用 cygwin 安装程序 (setup.exe) 安装 Cygwin mysql 客户端

  • 使用 cygwin 客户端“mysql -u[user] -p[Password] -h[host]”在 cygwin 窗口中连接到您的服务器,在我的情况下为“mysql -uroot -pXXXX -h127.0.0.1”

我认为当问题发布时,cygwin设置没有提供mysql组件,现在已经解决了。

于 2012-06-06T12:18:52.590 回答
0

我为此创建了一个让我满意的半修复程序。我在 cmd.exe 中运行 cygwin.bat,然后输入 mysql - 一切正常。

我意识到问题很严重。

简单的解决方案?下载Console2,在设置下你可以将它指向 cygwin shell。重启Console2,运行mysql,出现输出。

无论如何,这是有利的,因为 Console2 具有比 Mintty 更强大的界面/定制。我真的很喜欢透明度和颜色映射选项。

于 2013-01-28T22:52:15.180 回答
0

做这个:

  1. 只需从 C:\Program Files\MySQL\MySQL Server 5.5\bin 复制你的 mysql.exe
  2. 将此 mysql.exe 粘贴到 C:\cygwin\usr\local\bin
  3. 现在运行哪个mysql,它会
于 2013-09-25T10:11:21.653 回答
0

Althoug Svend Hansen 的回答有一些要点,另一件事是环境变量中的 PATH - 如果mysql 的路径在cygwin之前

which mysql

将会呈现

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

否则它将显示 cygwin 客户端。

正如参考维基百科所说:

某些程序可能会在安装过程中将其目录添加到 PATH 变量内容的前面,以加快搜索过程和/或覆盖操作系统命令。

于 2014-02-02T10:24:35.040 回答
0

免责声明:以下在 MinGW/MSYS 上的 MinTTY 下为我解决了这个问题。根据研究,我相信同样的根本原因也会影响 Cygwin。

答案发布在这里:https ://stackoverflow.com/a/23164362/1034436

简而言之,您需要在mysql命令前加上 winpty console.exe(或使用别名)。该解决方案适用于本机Windows MySQL 可执行文件,而不是特殊的 cygwin/mingw 构建。但是,您必须编译 winpty,但这既简单又轻松,并且按照他们为我提供的文档工作。

注意:这也解决了我使用其他几个本机 Windows 控制台应用程序的问题,即 Python 和 Mercurial with OpenSSH。

于 2014-04-19T01:07:56.633 回答
0
  1. 下载 Cygwin
  2. 安装 mysql 客户端应用程序

  3. 在 .bashrc 文件中创建别名

    别名 mysql='mysql -h 127.0.0.1'

  4. 执行源 .bashrc

现在你可以连接到mysql了

mysql -u 用户 -p

于 2015-10-25T05:56:42.350 回答
0

重新安装cygwin并在重新安装期间在包中搜索mysql,安装mysql客户端,然后它就可以正常工作了。

于 2016-04-20T18:53:42.043 回答
0

今天发现这个问题 2018-03-18 寻找一些答案

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2 "No such file or directory")

该文件/etc/my.conf引用了/etc/my.cnf.d 我将其添加到的配置文件/etc/my.cnf.d/client.cnf

[client]
host=127.0.0.1
protocol=tcp

之后,我可以使用 cygwin 终端访问本地 Windows MySQL 实例mysql -u root -p

于 2018-03-18T22:30:00.667 回答