我在用MySQL v5.1在乌班图机器。
MySQL 在我的机器上曾经可以工作。 (运行mysql -u root
给了我 MySQL 命令行。)
今天下午,我做了以下一件事:
1.mysql
通过运行检查与“”相关的活动进程:
$ ps aux | grep 'mysql'
mysql 1457 3.3 1.3 130044 27076 ? Ssl 16:22 0:43 /usr/sbin/mysql
2.我从上面的输出中看到mysql进程的PID是1457,所以我用以下命令杀死了它:
$ sudo kill 1457
3.现在,如果我运行$ mysql -u root
,我会收到错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
这是合理的,因为我杀死了该进程。
我怎样才能让我的 MySQL 服务器在被杀死后重新恢复并运行?
我尝试运行sudo /etc/init.d/mysql start
,但我的 MySQL 服务器没有启动。这是为什么?
答案1
在 Ubuntu 上你应该使用service
:
sudo service mysql start
将来如果您想重新启动它:
sudo service mysql restart
答案2
经过一番研究我发现这。您使用的是 Ubuntu,因此请转到System -> Administration -> Services
,取消选中 MySQL,保存它,然后再次重新选中。
答案3
您可能已经损坏了数据库,导致 mysqld 无法启动。查看 /var/log/daemon.log 以了解 mysql 启动错误。还要查找 /var/log/mysql.err 并查看那里是否有任何内容。
将来“不要那样做”因为不干净的数据库服务器关闭会严重损坏 myisam 表,如果你在 innodb 上幸运的话,只会导致重大回滚,从而擦除所有不成功的事务。
您可以在以下位置找到错误消息信息http://dev.mysql.com/doc/
答案4
我会使用 daemontools 等来保持 mysql 在系统上运行,以防数据库服务器意外关闭。然而,正如其他人在这里指出的那样,在生产环境中杀死数据库服务器确实是一个坏主意。
回答mysql无法启动的问题,这是因为mysql init脚本检查mysqld的pidfile,我不确定它是否检查pid的有效性,然后stalelock可能会阻止mysql启动。最好的办法是service mysql restart
确保/etc/init.d/mysql restart
mysql 是从基础启动的。确保 mysql 服务正在运行ps
,并service mysqld status
检查 mysqld 的日志,以检查进程是否干净启动以及所有数据库/表是否已正确初始化。