停止 MySQL 数据库服务器:mysqld 失败

Posted

技术标签:

【中文标题】停止 MySQL 数据库服务器:mysqld 失败【英文标题】:Stopping MySQL database server: mysqld failed 【发布时间】:2014-12-10 06:49:52 【问题描述】:

基本上,当我想sop mysql服务器服务时:

sudo /etc/init.d/mysql stop

我收到此错误消息:

[FAIL] Stopping MySQL database server: mysqld failed!

经过一些研究来解决这个问题,我遵循了这个待办事项:

sudo cat /etc/mysql/debian.cnf

这给了我类似的东西:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = xXxXxXxXxXxX
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = xXxXxXxXxXxX
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

然后我做了

mysql -u root -p

最后

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xXxXxXxXxXxX' WITH GRANT OPTION;

这应该可以工作,但我在这里遇到另一个错误:

ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: NO)

实际上,在那之前我犯了一些错误,运行这个:DELETE * FROM mysq.user WHERE host = 'localhost'。

我现在只剩下一个用户,而且他似乎没有 GRANT 任何东西的权限:

mysql> select Host, user from mysql.user;
+------------------+--------------+
| Host             | user         |
+------------------+--------------+
| %                | root         |
+------------------+--------------+
1 rows in set (0.00 sec

有没有办法解决这个问题?其实我只是想删除mysql服务器并从头开始重新安装。但在我可以先停止 mysqld 之前,它将无法删除:

~$ ps 辅助 | grep mysql | grep -v grep

root      8252  0.0  0.0  12720  2776 pts/1    Ss+  09:42   0:00 /usr/bin/dpkg --status-fd 17 --configure mysql-common:all libmysqlclient18:amd64 libdbd-mysql-perl:amd64 mysql-client-5.5:amd64 mysql-server-core-5.5:amd64 mysql-server-5.5:amd64
root      8255  0.0  0.3  61372 14180 pts/1    S+   09:42   0:00 /usr/bin/perl -w /usr/share/debconf/frontend /var/lib/dpkg/info/mysql-server-5.5.postinst configure 5.5.38-0+wheezy1
root      8265  0.0  0.0  10900  1676 pts/1    S+   09:42   0:00 /bin/bash /var/lib/dpkg/info/mysql-server-5.5.postinst configure 5.5.38-0+wheezy1
root      8579  0.0  0.0  21656  2928 pts/1    S+   09:50   0:00 whiptail --backtitle Configuration package tools --title mysql-server-5.5 Configuration --output-fd 11 --nocancel --msgbox Impossible to change « root » password of MySQL 13 198
root     30566  0.0  0.0   4180   728 ?        S    00:41   0:00 /bin/sh /usr/bin/mysqld_safe
mysql    30882  0.0  1.9 368500 77668 ?        Sl   00:41   0:16 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
root     30883  0.0  0.0   5588   696 ?        S    00:41   0:00 logger -t mysqld -p daemon.error

我已经试过了:

sudo apt-get remove mysql-server mysql-client mysql-common
sudo apt-get purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get remove --purge mysql\*

它似乎失败了,因为它首先无法停止 mysqld

【问题讨论】:

【参考方案1】:

先软杀sudo kill 30882,不行就火杀sudo kill -9 30882,其中30882是mysql进程的pid。

【讨论】:

嘿,感谢它有助于杀死 mysql 进程!我什至没有想过使用这个命令。我能够毫无错误地删除 mysql 服务器,并以干净的方式重新安装它。【参考方案2】:

我遇到了同样的问题。我第一次做

sudo /etc/init.d/mysql restart

然后

sudo /etc/init.d/mysql stop

工作。

【讨论】:

这可能不是一个解决方案。当您试图停止 MySQL 服务器时,很可能它没有运行。 这对问题没有任何帮助。【参考方案3】:

首先可以通过以下方式查看mysql运行进程

ps -ef | grep mysql

然后获取mysql的pid文件路径并删除.pid文件

sudo rm path/to/.pidfile

然后运行命令

sudo /etc/init.d/mysql stop

这对我有用。

【讨论】:

以上是关于停止 MySQL 数据库服务器:mysqld 失败的主要内容,如果未能解决你的问题,请参考以下文章

mysql连接客户超过几个就出现停止运行

mysql服务启动停止重启

终极解决重启服务器后mysql启动失败 报 ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).

SQL 数据库连接服务器失败是啥原因?

linux下怎么启动mysql服务

Mysql常用命令