我可以从DOS提示符下成功连接到MySQL,但是当我尝试从cygwin连接时,它只是挂起。
$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p
怎么了?
答案 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有两个炮弹:
c:\cygwin\bin\mintty.exe
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
答案 3 :(得分:5)
我在这里发布了一个解决方案/解决方法:
enter key sometimes not recognized in windows apps under cygwin
答案 4 :(得分:5)
从cmd.exe可执行文件运行bash,然后mysql将在bash中运行。
这将在windows cmd.exe环境下运行bash,当你尝试运行mysql时,它将按照你的预期执行。这在Windows 7下工作,但尚未在任何其他版本中进行测试。
答案 5 :(得分:2)
然后可以毫无问题地运行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)
执行此操作:
答案 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)
安装mysql客户端应用程序
在.bashrc文件中创建别名
alias mysql =' mysql -h 127.0.0.1'
现在你可以连接到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