你应该如何更快地从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
但似乎挂了。
答案 0 :(得分:2)
我知道用户可能已经找到了关闭MySQL的方法,但我只是遇到了同样的问题,这是谷歌的第一次打击。
诀窍是在命令中添加主机作为IP地址和用户(如果我使用localhost作为主机,命令将挂起)。
mysqladmin.exe -h 127.0.0.1 -u root shutdown
@Chloe有一些场景可能无效。我认为最常见的两种情况是MySQL是否绑定到不同的IP,或者它是否绑定到不同的端口(其他情况是,如果MySQL不使用TCP,而是其他传输协议之一)。
因此,例如,在我运行mysqld_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。