无法启动/停止 mysql 服务

无法启动/停止 mysql 服务

接管运行 MySQL 的 Debian Etch 网络服务器。

我通常使用以下命令启动、停止和重新启动 msyql:

/etc/init.d/mysql 重启

由于某种原因,在此设置中我得到以下信息:

:〜#/etc/init.d/mysql停止

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

mysql 进程运行良好:

:~# ps aux | grep mysql 
root      2045  0.0  0.1   2676  1332 ?        S    Jun25   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     2082  0.6 10.7 752544 111188 ?       Sl   Jun25  18:49 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root      2083  0.0  0.0   1568   504 ?        S    Jun25   0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root     11063  0.0  0.0   2856   716 pts/0    S+   17:29   0:00 grep mysql

我确信有一些非常简单的方法可以做到这一点,但我也想了解发生了什么。为什么典型的方法对我不起作用?

编辑更新 更新如下:

JBRLSVR001:/var/log/mysql# mysqladmin shutdown
JBRLSVR001:/var/log/mysql# dpkg --list mysql\*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed 
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                                         Version                                      Description
 +++-============================================-============================================-========================================================================================================
un  mysql-client                                 <none>                                       (no description available)
un  mysql-client-4.1                             <none>                                       (no description available)
ii  mysql-client-5.0                             5.0.32-7etch8                                mysql database client binaries
ii  mysql-common                                 5.0.32-7etch8                                mysql database common files (e.g. /etc/mysql /my.cnf)
un  mysql-common-4.1                             <none>                                       (no description available)
ii  mysql-server                                 5.0.32-7etch8                                mysql database server (meta package depending on the latest version)
un  mysql-server-4.1                             <none>                                       (no description available)
ii  mysql-server-5.0                             5.0.32-7etch8                                mysql database server binaries

mysqladmin shutdown 确实有效,但我仍然好奇为什么 /etc/init.d/mysql 命令不起作用。

答案1

mysqladmin shutdown

应该可以关闭服务器。

我认为有两种可能:

  1. MySQL 出现问题并且由于某种原因拒绝关闭。
  2. 前任管理员做了一些奇怪的事情。要么修改了 init.d 脚本,要么根本没有使用 Debian 软件包来安装 MySQL。

说什么dpkg --list mysql\*

/var/log/mysql.err 说了什么?或者其他 mysql 日志?

编辑:

那么mysqladmin shutdown有效吗?

据此,mysql-server 包已安装(mysql-server-5.0;mysql-server 包可能只是一个存根)。所以他们可能已经安装了它?运行debsums mysql-server-5.0可能会告诉你更多信息。 dpkg --listfiles mysql-server-5.0也可以提供帮助...

/etc/init.d/mysql 中实际上有什么?我还没有检查该软件包的具体版本,但它应该尝试使用mysqladmin shutdown... 也许你很幸运,他们只破坏了那个...

答案2

为什么会发生这种情况

如果您执行 mysql 导入并覆盖 mysql 数据库本身,这是一个常见问题,例如当您从 mysqldump -A 备份恢复时。

这是一件好事:您可能想要备份所有的 mysql 用户、权限等等——但它可能会对用于干净关闭 mysql 的 debian-sys-maint 用户等造成严重破坏。

虽然这个新数据库可能会更改 root 密码和 debian-sys-maint 密码,但它当然不会自动更改 /etc/mysql/debian.cnf 中预期的 debian-sys-maint 密码。事实上,除非您也备份了该文件,否则您可能甚至不知道该密码是什么了!

重置 mysql root 密码(可选)

首先,如果新旧服务器的 mysql root 密码不同,则可以使用 mysqladmin 来修复它:

mysql -p -u root password 'newpassword'

但是,当您使用 apt-get 安装 mysql-server 时,它可能会提示您输入新的 mysql root 密码,并且您可能使用了与之前相同的密码。

修复 debian sys maint 密码。

因此,现在查找 debian 在新服务器上安装时为您创建的 debian sys maint 密码。(您需要 sudo,因为这应该是一个受到严格保护的文件。)

sudo cat /etc/mysql/debian.cnf

现在,使用上面设置的root密码登录mysql:

mysql -p -u root   # use your new password when prompted

重置 debian-sys-maint 用户的密码,并且不要忘记刷新权限:

>  SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('samepassword');
>  FLUSH PRIVILEGES;
>  QUIT

测试以确保其有效:

sudo /etc/init.d/mysql restart

小建议

如果您需要重置服务器的 root 密码而不必关闭服务器,则此用户帐户有权执行此操作 - 只需 cat debian.cnf 文件并以该用户身份登录即可。NB 像保护 root 一样保护此用户帐户。

答案3

pkill mysql

一定会起作用

答案4

从技术上来说你可以用以下方式结束它:

pkill -9 mysqld

但你可能会丢失数据?

你最好去 http://www.serverfault.com 询问

相关内容