我可以从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)
到配置文件.
Ken*_*tle 18
假设你有一个MySQL的本机Windows版本,那么DOS
(命令提示符)窗口和之间存在终端仿真不兼容bash
.提示mysql
没有显示出来.
要确认这一点,请键入命令并返回 - 它可能会起作用,但命令的提示和回显(您正在键入的内容)会丢失.
CYGWIN
系统属性或中可能有一个解决方法bash
,但我从来没有花时间来解决这个问题.
其他答案缺少以下关键细节:
Cygwin有两个shell:
c:\cygwin\bin\mintty.exe
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中运行.
这将在Windows cmd.exe环境下运行bash,当您尝试运行mysql时,它将按预期执行.这在Windows 7下工作,但尚未在任何其他版本中测试过.
归档时间: |
|
查看次数: |
44241 次 |
最近记录: |