为什么我无法停止 Debian 上的 MySQL 服务?

为什么我无法停止 Debian 上的 MySQL 服务?

我刚刚尝试通过将 中的“squeeze”替换为“unstable”来从 debian squeeze 升级到不稳定版本/etc/apt/sources.list。除了 MySQL 之外,升级很顺利,因为无法停止 MySQL,所以升级失败了。

/etc/init.d/mysql stop只是返回失败,但如果我尝试获取状态,/etc/init.d/mysql status则会给出此错误:

me@debian:~$ sudo /etc/init.d/mysql status
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

MySQL 运行良好,我检查了 phpmyadmin 中 debian-sys-maint 的权限,它可以执行所有操作,但只能从 连接localhost

答案1

尝试这个:

  1. sudo cat /etc/mysql/debian.cnf并查找[client][mysql_upgrade]部分下列出的密码

  2. mysql -u root -p password是原始 MySQL root 密码

  3. GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '*the password obtained from step 1*';

  4. /etc/init.d/mysql restart

这就是解决办法如果你感兴趣的话,这背后的原因是什么?

答案2

答案更新。在第 3 步中,我必须使用

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'the password obtained from step 1';

“ON” 后面的句号周围有星号。适用于 MySql 5.1

答案3

MySQL 参考手册你可以这样做:

  1. 以运行服务器的 Unix 用户身份登录到您的系统mysqld(例如mysql)。
  2. 找到.pid包含服务器进程 ID 的文件。此文件的确切位置和名称取决于您的发行版、主机名和配置。常见位置是/var/lib/mysql//var/run/mysqld//usr/local/mysql/data/。通常,文件名的扩展名为,并以或您的系统主机名.pid开头。mysqld

您可以通过向 mysqld 进程发送常规 kill(不是 kill -9)来停止 MySQL 服务器,在以下命令中使用 .pid 文件的路径名:

    kill `cat /mysql-data-directory/host_name.pid`

这部分:cat /mysql-data-directory/host_name.pid返回文件的内容,也就是进程id。

相关内容