Windows 8 正在Cygwin中关闭mysqld

Windows 8 正在Cygwin中关闭mysqld,windows-8,cygwin,mysql,Windows 8,Cygwin,Mysql,您应该如何从Cygwin更快地关闭mysqld(而不终止任务管理器中的进程)并防止这些错误 我就是这样开始的: $ /usr/bin/mysqld_safe & [1] 4440 Chloe@xps ~ $ 130809 17:27:09 mysqld_safe Logging to '/var/lib/mysql/xps.err'. chown: invalid user: `mysql' 130809 17:27:10 mysqld_safe Starting mysqld dae

您应该如何从Cygwin更快地关闭mysqld(而不终止任务管理器中的进程)并防止这些错误

我就是这样开始的:

$ /usr/bin/mysqld_safe &
[1] 4440

Chloe@xps ~
$ 130809 17:27:09 mysqld_safe Logging to '/var/lib/mysql/xps.err'.
chown: invalid user: `mysql'
130809 17:27:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
当我试图关闭它时,它会永远打印此内容,并且不会响应^C:

$ /usr/sbin/mysqld.exe shutdown
130809 17:29:26 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
130809 17:29:26 [Note] Plugin 'FEDERATED' is disabled.
130809 17:29:26 InnoDB: The InnoDB memory heap is disabled
130809 17:29:26 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130809 17:29:26 InnoDB: Compressed tables use zlib 1.2.7
130809 17:29:26 InnoDB: Initializing buffer pool, size = 128.0M
130809 17:29:26 InnoDB: Completed initialization of buffer pool
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
130809 17:29:26  InnoDB: Retrying to lock the first data file
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
在反复打印这些错误3分钟后,它终于假装关闭了,但它确实没有关闭,因为它仍然在任务管理器和ps列表中。我认为不应该花那么长时间

130809 17:31:06 [Note] /usr/sbin/mysqld: Shutdown complete
我也试过了

$ mysqladmin shutdown

但是这个问题似乎还没有解决。

我知道用户可能已经找到了关闭MySQL的方法,但我也遇到了同样的问题,这是谷歌的第一次成功

诀窍是在命令中添加主机作为IP地址和用户(如果使用localhost作为主机,命令将挂起)

@克洛伊,在一些情况下,这可能行不通。我认为最常见的两种情况是MySQL绑定到不同的IP或绑定到不同的端口(其他情况是MySQL不使用TCP,而是使用其他传输协议之一)

因此,例如,在我运行
mysqld\u safe&
并启动mysql之后,当我运行命令netstat时,我可以看到它正在侦听并且在默认端口3306上

$ netstat -an | grep 3306
我希望这有帮助


编辑 如果MySQL未运行,则需要提供连接超时(
--connect timeout=N
),因为默认情况下,mysqladmin会永远等待连接到服务器。例如,如果MySQL没有运行

$ mysqladmin.exe -h 127.0.0.1 -u root --connect-timeout=5 shutdown

mysqladmin: connect to server at '127.0.0.1' failed
error: 'Can't connect to MySQL server on '127.0.0.1' (4)'
Check that mysqld is running on 127.0.0.1 and that the port is 3306.
You can check this by doing 'telnet 127.0.0.1 3306'

在这里,命令等待5秒钟后才放弃。在我看来,它永远等待是没有意义的,但这是mysql采用的默认设置:s.

似乎也挂起。如果mysqld没有运行,它会挂起,但如果它正在运行,它会工作。奇怪,啊!默认情况下,mysqladmin将永远等待连接到服务器:(。请查看我的编辑!我们再次见面,我的复仇女神。
$ mysqladmin.exe -h 127.0.0.1 -u root --connect-timeout=5 shutdown

mysqladmin: connect to server at '127.0.0.1' failed
error: 'Can't connect to MySQL server on '127.0.0.1' (4)'
Check that mysqld is running on 127.0.0.1 and that the port is 3306.
You can check this by doing 'telnet 127.0.0.1 3306'