我无法重新启动 mysql 服务
[root ~]# service mysqld restart
Stopping MySQL: [FAILED]
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL: [FAILED]
来自mysqld.log
131004 10:34:49 mysqld started
131004 10:34:52 InnoDB: Started; log sequence number 0 43655
131004 10:34:52 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
131004 10:34:52 [ERROR] Do you already have another mysqld server running on port: 3306 ?
131004 10:34:52 [ERROR] Aborting
131004 10:34:52 InnoDB: Starting shutdown...
131004 10:34:54 InnoDB: Shutdown completed; log sequence number 0 43655
131004 10:34:54 [Note] /usr/libexec/mysqld: Shutdown complete
131004 10:34:54 mysqld ended
流程
# ps -Af | grep mysql
root 24965 1 0 08:39 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
mysql 25018 24965 43 08:39 ? 00:57:11 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --open-files-limit=65535 --socket=/var/lib/mysql/mysql.sock
root 27960 27143 0 10:50 pts/0 00:00:00 grep mysql
看起来好像有两个 mysqld 在运行,其中一个是僵尸进程。我该如何修复这个问题?
答案1
尝试
ps -Af
找到正在运行的其他 mysqld 然后将其终止。
答案2
尝试sudo netstat -lntup
查找端口 3306,如果 MySQL 仍在监听,则意味着它没有被杀死,使用其他评论中建议的 kill 命令并检查 init 脚本以查看为什么它没有停止 MySQL。
答案3
一般来说,当你无法停止 mysql 时,这是因为无法通过 mysqladmin 关闭它。运行以下命令查看它是否关闭
mysqladmin shutdown
如果这不起作用,那么您需要在 init 脚本或 /root/.my.cnf 文件或另一个 my.cnf 文件中为其设置密码。
答案4
重新启动您的虚拟机或服务器,僵尸 mysql 将不会启动。