MySQL进程无法停止。

31

我最近在Ubuntu 12.04桌面操作系统上安装了5.5.28-29.2 Percona Server(GPL),版本号为29.2。我尝试使用不同的方法停止服务器:

- sudo /etc/init.d/mysql stop
- sudo kill -9 pid
- mysqladmin -u root -p shutdown
所有这些方法都会停止进程,但它在死亡后会自动重新启动。我已经检查了syslog (/var/log/syslog/),总是显示下一个跟踪:
Jan  4 17:50:44 kernel: [ 1915.494219] init: mysql main process (17311) killed by KILL signal
Jan  4 17:50:44 kernel: [ 1915.494245] init: mysql main process ended, respawning
Jan  4 17:50:44 kernel: [ 1915.500025] type=1400 audit(1357318244.557:48): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18458 comm="apparmor_parser"
Jan  4 17:50:46 /etc/mysql/debian-start[18501]: Upgrading MySQL tables if necessary.
Jan  4 17:50:46 /etc/mysql/debian-start[18504]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Jan  4 17:50:46 /etc/mysql/debian-start[18504]: Looking for 'mysql' as: /usr/bin/mysql
Jan  4 17:50:46 /etc/mysql/debian-start[18504]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Jan  4 17:50:46 /etc/mysql/debian-start[18504]: This installation of MySQL is already upgraded to 5.5.28, use --force if you still need to run mysql_upgrade
Jan  4 17:50:46 /etc/mysql/debian-start[18515]: Checking for insecure root accounts.
Jan  4 17:50:46 /etc/mysql/debian-start[18520]: Triggering myisam-recover for all MyISAM tables

你知道为什么该进程会自动重启吗? 非常感谢!

7个回答

60

sudo stop mysqld 怎么样? - The New Guy
输出:stop: 未知作业:mysqld - arun
3
sudo /etc/init.d/mysql stop 是什么意思? - The New Guy
1
我也遇到了完全相同的问题,你的解决方案起了作用。 服务器版本:5.5.38-0ubuntu0.14.04.1 - Bob Probst
2
@新人 我尝试使用 sudo /etc/init.d/mysqld stop,但没有成功。 - Optimus
4
sudo service mysql stop 的意思是什么? - The New Guy

32

对我而言使用sudo service mysql stop命令解决了问题。


主要问题是Ubuntu中的服务标志,“kill -9”或“stop”对于其他发行版都可以解决此问题。 您需要查看mysql日志。 底部必须显示:“/[path]/mysqld:关闭完成”,否则您的守护程序仍在运行。 您可以通过“tail -f /[path]/name.log”实时检查它。回答很好。 - Luis

18

想要杀掉所有的MySQL实例吗?尝试以root身份运行以下命令:

 pkill mysqld;

2
我也尝试使用 pkill 来终止所有实例,但它仍然会启动。谢谢。 - ljmelgui

6

我在Mac OS上使用Homebrew。 brew services stop mysql 对我来说没有起作用,但是sudo brew services stop mysql可以。


2
我猜测,mysqld可能是通过mysql_safe init脚本启动的,该脚本将重新启动服务器。

你说得对,mysqld是通过mysql_safe init脚本启动的。但是我认为如果我使用/etc/init.d/mysql stop命令,服务器就不应该自动重启。谢谢。 - ljmelgui

2
对于那些在几年后看到此问题的人们,我也遇到了类似的问题并解决了它。
原来在/etc/init目录下还有一个名为orig_mysql.conf的第二个init脚本文件与mysql.conf文件并存。这会导致upstart启动两个实例,并在其中一个结束时出现混乱。因此就会持续不断地重新生成。
我的解决方案如下:
1.如果可能,通过upstart停止mysql: service mysql stop 2.删除其中一个配置文件(我删除了/etc/init/orig_mysql.conf)。然后使用telinit u重启init。 3.手动杀掉任何剩余的mysqld进程。
一旦您确认没有运行任何mysqld进程并且它们不再重新生成,则使用service mysql start重新启动mysql。
希望这能帮到你。我花了两年时间才解决这个问题。

谢谢!它有帮助。 - Diode

0
这可能不适用于此特定问题,但还是试一下。我检查了错误日志(“/var/log/mysql/error.log”),发现“explicit_defaults_for_timestamp=TRUE”导致错误(“未知变量”)。所以我从my.cnf(“/etc/mysql/my.cnf”)中删除了它,并运行“sudo start mysql”,然后它重新启动并运行。希望这也能有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接