从cygwin连接到mysql

时间:2008-12-01 02:26:54

标签: mysql cygwin

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

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

怎么了?

14 个答案:

答案 0 :(得分:69)

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

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

所以我运行了搜索“mysql”的cygwin Setup.exe并安装了最新的“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

到配置文件。

答案 1 :(得分:17)

假设您拥有MySQL的本机Windows版本,DOS(命令提示符)窗口和bash之间存在终端仿真不兼容。 mysql的提示未显示。

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

CYGWIN系统属性或bash中可能有解决方法,但我从来没有花时间解决这个问题。

答案 2 :(得分:7)

其他答案缺少以下详细信息:

Cygwin有两个炮弹:

  1. 默认:c:\cygwin\bin\mintty.exe
  2. 基本:c:\cygwin\Cygwin.bat(启动c:\cygwin\bin\bash.exe
  3. Win32 MySQL可以正确写入#2,但不能#1,因为Win32 MySQL cannot probe stdin properly(感谢@PeterNore)

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

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

    奖金Cygwin guide to overcoming path problemsthanks @Dustin

答案 3 :(得分:5)

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

enter key sometimes not recognized in windows apps under cygwin

答案 4 :(得分:5)

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

  1. 在桌面上为cmd.exe创建快捷方式。
  2. 打开快捷方式的属性,将启动目录更改为cygwin bin目录(通常为C:\ cygwin \ bin)。
  3. 将“/ c bash.exe”添加到target参数中的命令末尾。
  4. 这将在windows cmd.exe环境下运行bash,当你尝试运行mysql时,它将按照你的预期执行。这在Windows 7下工作,但尚未在任何其他版本中进行测试。

答案 5 :(得分:2)

  1. 将cygwin bin目录放在路径env变量中。
  2. 通过运行cmd
  3. 使用命令窗口
  4. 在cmd窗口中运行bash -l <​​/ li>

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

答案 6 :(得分:1)

Svend Hansen的回答是正确的:

  • 安装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组件,现在已经解决了。

答案 7 :(得分:0)

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

我意识到这个问题很简单。

简单的解决方案?下载Console2,然后根据您可以指定的设置 它到cygwin shell。重启Console2,运行mysql和输出 出现。

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

答案 8 :(得分:0)

执行此操作:

  1. 只需从C:\ Program Files \ MySQL \ MySQL Server 5.5 \ bin
  2. 复制你的mysql.exe
  3. 将此mysql.exe粘贴到C:\ cygwin \ usr \ local \ bin
  4. 现在运行哪个mysql,它将

答案 9 :(得分:0)

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

which mysql

将显示

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

否则会显示cygwin客户端。

参考维基百科说:

  

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

答案 10 :(得分:0)

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

答案发布在此处:https://stackoverflow.com/a/23164362/1034436

简而言之,您需要在winpty mysql之前添加console.exe命令(或者使用别名)。此解决方案适用于原生 Windows MySQL可执行文件,而不是特殊的cygwin / mingw构建。但是,你必须编译winpty,但这很简单,没有痛苦,并根据他们的文档为我工作。

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

答案 11 :(得分:0)

  1. 下载Cygwin
  2. 安装mysql客户端应用程序

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

    alias mysql =&#39; mysql -h 127.0.0.1&#39;

  4. 执行源.bashrc
  5. 现在你可以连接到mysql

    mysql -u user -p

答案 12 :(得分:0)

重新安装cygwin并在重新安装期间在软件包中搜索mysql,安装mysql客户端然后它会正常工作。

答案 13 :(得分: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

之后,我可以使用mysql -u root -p

从cygwin终端访问本地Windows MySQL实例