接管运行 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
应该可以关闭服务器。
我认为有两种可能:
- MySQL 出现问题并且由于某种原因拒绝关闭。
- 前任管理员做了一些奇怪的事情。要么修改了 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 询问