从cygwin连接到mysql

MCS*_*MCS 56 mysql cygwin

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

$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

怎么了?

Sve*_*sen 71

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

$ which mysql
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
Run Code Online (Sandbox Code Playgroud)

所以我运行cygwin Setup.exe搜索"mysql"并安装了最新的"mysql客户端".现在which mysql看起来像:

$ which mysql
/usr/bin/mysql
Run Code Online (Sandbox Code Playgroud)

并且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)
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过向-h 127.0.0.1命令行添加显式选项来修复它,如:

$ mysql -u root -p -h 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

基于评论的更新:

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

[client]
host=127.0.0.1
Run Code Online (Sandbox Code Playgroud)

到文件 /etc/my.cnf

在Cygwin的某些安装中,指定主机-h可能不够.如果是这样,请尝试指定:

--protocol=tcp
Run Code Online (Sandbox Code Playgroud)

或添加

protocol=tcp
Run Code Online (Sandbox Code Playgroud)

到配置文件.

  • 为了在每次连接时保存`-h 127.0.0.1`,你可以在`/ etc/my.cnf`创建一个MySQL配置文件,并放入; `[client] \n host = 127.0.0.1`.默认情况下,MySQL客户端将使用网络. (10认同)
  • 就MySQL而言,`localhost`!=``127.0.0.1`.前者表示应该通过UNIX套接字建立连接,本机Windows服务器显然不支持该套接字.后者强制网络连接,因此不同. (2认同)

Ken*_*tle 18

假设你有一个MySQL的本机Windows版本,那么DOS(命令提示符)窗口和之间存在终端仿真不兼容bash.提示mysql没有显示出来.

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

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

  • Svend Hansen在下面发布了一个工作解决方案; 只需安装cygwin mysql客户端即可恢复营业. (4认同)

Don*_*rty 7

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

Cygwin有两个shell:

  1. 默认: c:\cygwin\bin\mintty.exe
  2. 基本:( 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
Run Code Online (Sandbox Code Playgroud)

奖励: Cygwin指导克服路径问题 (感谢@Dustin)


小智 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下工作,但尚未在任何其他版本中测试过.