【问题标题】:connecting to mysql from cygwin从 cygwin 连接到 mysql
【发布时间】:2008-12-01 02:26:53
【问题描述】:

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

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

怎么了?

【问题讨论】:

  • 我刚遇到这个问题。 9年后仍然存在。 MySQL Ver 14.14 Distrib 5.7.18,适用于 Win64 (x86_64)。 Cygwin 2.8.0(0.309/5/3) x86_64.
  • 是的,防火墙开发人员让我感到羞耻......它仍然存在

标签: mysql cygwin


【解决方案1】:

我刚遇到这个,当我读到有人提到它是你在 cygwin 中运行的 windows/DOS 命令时,我做了一个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

基于 cmets 的更新:

为避免每次连接时在命令行中指定-h 127.0.0.1,可以添加:

[client]
host=127.0.0.1

到文件/etc/my.cnf

在某些 Cygwin 安装中,使用 -h 指定主机可能不够。如果是这样,请尝试同时指定:

--protocol=tcp

或添加

protocol=tcp

到配置文件。

【讨论】:

  • 我一直在尝试使用套接字,127.0.0.1 成功了!谢谢。
  • 要保存每次连接时放置-h 127.0.0.1,您可以在/etc/my.cnf处创建一个MySQL配置文件,然后放置; [client]\n host=127.0.0.1。 MySQL 客户端将默认使用网络。
  • 就 MySQL 而言,localhost != 127.0.0.1。前者表示应通过 UNIX 套接字建立连接,而本机 Windows 服务器显然不支持。后者强制建立网络连接,因此有所不同。
  • 如果您想查看 my.cnf 的放置位置:在“C:\cygwin64\etc\”下创建一个新目录。将其命名为“mysql”。把“my.cnf”放在那里。内容应该是 [client],并且在新的一行中,host=127.0.0.1
  • 在我的 Cygwin 上,-h localhost 是不够的,我还必须指定 --protocol=tcp 以避免套接字错误。
【解决方案2】:

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

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

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

【讨论】:

  • 运行 telnet 时似乎也会发生这种情况。
  • Svend Hansen 在下面发布了一个可行的解决方案;只需安装 cygwin mysql 客户端,您就可以重新开始工作了。
  • 十年似乎是解决 Windows 错误的合理时间,现在解决了吗?
【解决方案3】:

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

Cygwin 有两个 shell:

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

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 problems (thanks @Dustin)

【讨论】:

    【解决方案4】:

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

    enter key sometimes not recognized in windows apps under cygwin

    【讨论】:

    • 这次我使用了基本的 cygwin 命令提示符,它工作正常。谢谢!
    • 我没有设置任何 CYGWIN 环境变量。仍然是同样的问题 - 使用 Cygwin 终端以及使用 SSH 时。
    【解决方案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 下工作,但尚未在任何其他版本中进行测试。

    【讨论】:

    • (-1 撤回,因为用户是 SO 新手)。 OP可以在windows下启动bash;您的解决方案不会向标准 Cygwin 安装提供的常规 bash 快捷方式添加任何信息。而且你没有回答他的问题:他调用 MySQL 的方式有什么问题?
    • 更改 cmd 终端窗口的属性(esp 字体)将使其与启动 cygwin 终端一样好。这应该是这个问题的答案。
    • google 现在已经对您的答案进行了 google 化,因此您可能不会得到任何加分,因为没有人会再访问 SO,除非我这样做了,所以也许我错了。
    【解决方案6】:
    1. 将 cygwin bin 目录放入路径 env 变量中。
    2. 通过运行 cmd 使用命令窗口
    3. 在 cmd 窗口中运行 bash -l

    然后MySQL就可以正常运行了。

    【讨论】:

      【解决方案7】:

      Svend Hansen 的答案是正确的:

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

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

      • 在 cygwin 窗口中使用 cygwin 客户端“mysql -u[user] -p[Password] -h[host]”连接到您的服务器,在我的例子中是“mysql -uroot -pXXXX -h127.0.0. 1"

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

      【讨论】:

        【解决方案8】:

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

        我马上意识到问题很严重。

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

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

        【讨论】:

          【解决方案9】:

          这样做:

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

          【讨论】:

            【解决方案10】:

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

            之前
            which mysql
            

            会显示

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

            否则它将显示 cygwin 客户端。

            正如参考维基百科所说:

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

            【讨论】:

              【解决方案11】:

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

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

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

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

              【讨论】:

                【解决方案12】:
                1. 下载 Cygwin
                2. 安装mysql客户端应用

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

                  别名 mysql='mysql -h 127.0.0.1'

                4. 执行源码.bashrc

                现在可以连接mysql了

                mysql -u 用户 -p

                【讨论】:

                  【解决方案13】:

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

                  【讨论】:

                    【解决方案14】:

                    今天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实例

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2012-08-07
                      • 2018-11-05
                      • 2018-08-07
                      • 2013-11-03
                      • 2017-12-11
                      • 2014-12-09
                      • 1970-01-01
                      相关资源
                      最近更新 更多