Upstart无法启动MySQL

安装MySQL后,我收到一些错误,我无法运行MySQL守护进程。 我已经尝试过几次卸载和重新安装,我不确定发生了什么。

以下是我所看到的内容:

Setting up mysql-server-5.5 (5.5.31-0ubuntu0.13.04.1) ... runlevel:/var/run/utmp: No such file or directory initctl: Unknown job: mysql 

sudo service mysql start给了我一个unknown job错误,并且在我的系统上找不到mysqld

除了可能从源代码编译并创建我自己的upstart脚本之外,我不知道从哪里开始。 当然,如果可能的话,我想以简单的方式做事。

如何成功运行MySQL或修复此问题?

以下是运行安装命令时发生的完整日志:

 sudo apt-get install mysql-server Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libaio1 libdbd-mysql-perl libdbi-perl libnet-daemon-perl libplrpc-perl libterm-readkey-perl mysql-client-5.5 mysql-client-core-5.5 mysql-server-5.5 mysql-server-core-5.5 Suggested packages: tinyca mailx The following NEW packages will be installed: libaio1 libdbd-mysql-perl libdbi-perl libnet-daemon-perl libplrpc-perl libterm-readkey-perl mysql-client-5.5 mysql-client-core-5.5 mysql-server mysql-server-5.5 mysql-server-core-5.5 0 upgraded, 11 newly installed, 0 to remove and 13 not upgraded. Need to get 0 B/25.4 MB of archives. After this operation, 88.0 MB of additional disk space will be used. Do you want to continue [Y/n]? Y Preconfiguring packages ... Selecting previously unselected package libaio1:i386. (Reading database ... 159063 files and directories currently installed.) Unpacking libaio1:i386 (from .../libaio1_0.3.109-3_i386.deb) ... Selecting previously unselected package libnet-daemon-perl. Unpacking libnet-daemon-perl (from .../libnet-daemon-perl_0.48-1_all.deb) ... Selecting previously unselected package libplrpc-perl. Unpacking libplrpc-perl (from .../libplrpc-perl_0.2020-2_all.deb) ... Selecting previously unselected package libdbi-perl. Unpacking libdbi-perl (from .../libdbi-perl_1.622-1_i386.deb) ... Selecting previously unselected package libdbd-mysql-perl. Unpacking libdbd-mysql-perl (from .../libdbd-mysql-perl_4.021-1_i386.deb) ... Selecting previously unselected package mysql-client-core-5.5. Unpacking mysql-client-core-5.5 (from .../mysql-client-core-5.5_5.5.31-0ubuntu0.13.04.1_i386.deb) ... Selecting previously unselected package libterm-readkey-perl. Unpacking libterm-readkey-perl (from .../libterm-readkey-perl_2.30-4build4_i386.deb) ... Selecting previously unselected package mysql-client-5.5. Unpacking mysql-client-5.5 (from .../mysql-client-5.5_5.5.31-0ubuntu0.13.04.1_i386.deb) ... Selecting previously unselected package mysql-server-core-5.5. Unpacking mysql-server-core-5.5 (from .../mysql-server-core-5.5_5.5.31-0ubuntu0.13.04.1_i386.deb) ... Selecting previously unselected package mysql-server-5.5. Unpacking mysql-server-5.5 (from .../mysql-server-5.5_5.5.31-0ubuntu0.13.04.1_i386.deb) ... Selecting previously unselected package mysql-server. Unpacking mysql-server (from .../mysql-server_5.5.31-0ubuntu0.13.04.1_all.deb) ... Processing triggers for man-db ... Processing triggers for ureadahead ... Setting up libaio1:i386 (0.3.109-3) ... Setting up libnet-daemon-perl (0.48-1) ... Setting up libplrpc-perl (0.2020-2) ... Setting up libdbi-perl (1.622-1) ... Setting up libdbd-mysql-perl (4.021-1) ... Setting up mysql-client-core-5.5 (5.5.31-0ubuntu0.13.04.1) ... Setting up libterm-readkey-perl (2.30-4build4) ... Setting up mysql-client-5.5 (5.5.31-0ubuntu0.13.04.1) ... Setting up mysql-server-core-5.5 (5.5.31-0ubuntu0.13.04.1) ... Setting up mysql-server-5.5 (5.5.31-0ubuntu0.13.04.1) ... runlevel:/var/run/utmp: No such file or directory initctl: Unknown job: mysql runlevel:/var/run/utmp: No such file or directory initctl: Unknown job: mysql Setting up mysql-server (5.5.31-0ubuntu0.13.04.1) ... Processing triggers for libc-bin ... ldconfig deferred processing now taking place 

以下是运行apt-get命令安装后立即的/var/log/mysql/error.log的内容。

 130518 12:14:36 [Note] Plugin 'FEDERATED' is disabled. 130518 12:14:36 InnoDB: The InnoDB memory heap is disabled 130518 12:14:36 InnoDB: Mutexes and rw_locks use GCC atomic builtins 130518 12:14:36 InnoDB: Compressed tables use zlib 1.2.7 130518 12:14:36 InnoDB: Using Linux native AIO 130518 12:14:36 InnoDB: Initializing buffer pool, size = 128.0M 130518 12:14:36 InnoDB: Completed initialization of buffer pool 130518 12:14:36 InnoDB: highest supported file format is Barracuda. 130518 12:14:36 InnoDB: Waiting for the background threads to start 130518 12:14:37 InnoDB: 5.5.31 started; log sequence number 1595675 130518 12:14:37 InnoDB: Starting shutdown... 130518 12:14:38 InnoDB: Shutdown completed; log sequence number 1595675 130518 12:14:38 [Note] Plugin 'FEDERATED' is disabled. 130518 12:14:38 InnoDB: The InnoDB memory heap is disabled 130518 12:14:38 InnoDB: Mutexes and rw_locks use GCC atomic builtins 130518 12:14:38 InnoDB: Compressed tables use zlib 1.2.7 130518 12:14:38 InnoDB: Using Linux native AIO 130518 12:14:38 InnoDB: Initializing buffer pool, size = 128.0M 130518 12:14:38 InnoDB: Completed initialization of buffer pool 130518 12:14:38 InnoDB: highest supported file format is Barracuda. 130518 12:14:38 InnoDB: Waiting for the background threads to start 130518 12:14:39 InnoDB: 5.5.31 started; log sequence number 1595675 ERROR: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AL TER TABLE user ADD column Show_view_priv enum('N','Y') CHARACTER SET utf8 NOT ' at line 1 130518 12:14:39 [ERROR] Aborting 130518 12:14:39 InnoDB: Starting shutdown... 130518 12:14:40 InnoDB: Shutdown completed; log sequence number 1595675 130518 12:14:40 [Note] /usr/sbin/mysqld: Shutdown complete 

看起来许多应用程序依赖于/var/run/utmp来登录会话信息。

 sudo touch /var/run/utmp sudo chmod 664 /var/run/utmp sudo reboot 

重新启动后,执行这些命令,如@coteyr建议的那样,清理安装mysql

 sudo apt-get purge mysql-server sudo apt-get update sudo apt-get install mysql-server 

这应该可以解决您的问题。

编辑:

 sudo apt-get purge mysql-server sudo apt-get purge mysql-common sudo rm -rf /var/log/mysql sudo rm -rf /var/log/mysql.* sudo rm -rf /var/lib/mysql sudo rm -rf /etc/mysql sudo apt-get install mysql-server --fix-missing --fix-broken 

根据这篇博客文章 ,这似乎适用于很多人

该问题与MySql没有直接关系。 init守护程序控制工具没有将mysql服务器守护程序启动到/etc/init

您可以手动恢复:

 sudo initctl reload-configuration 

现在mysql服务器按预期启动。

关于这个未知的工作,我的解决了

 sudo /etc/init.d/mysql start 

而不是这个

 sudo service mysql start 

在这里我指的是

这可能不是一种技术解决方案,而是更多的解决方案。 我已经尝试过这个以及其他所有在互联网上进行解决的问题来解决这个问题。 没有任何效果。 最后我将软件包降级回MYSQL 5.29,它就像一个魅力。 谢谢。

 sudo apt-get install mysql-server 

然后一旦安装,确保/var/lib/mysql存在并且/etc/init.d/mysql存在。 /usr/bin/mysqld/usr/bin/mysqld_safe也应该存在。

如果您仍有问题,那么包装有问题(假设您没有错误)。 您可以“清除”它,“更新”然后“安装”包以查看是否清除了错误。

 sudo apt-get purge mysql-server sudo apt-get update sudo apt-get install mysql-server 

如果仍然无效,则需要向软件包维护者提交错误。

我现在遇到了这个问题并解决了它。

虽然您安装了mysql-server,但是守护程序需要运行才能使客户端连接到它。

首先检查mysql服务器是否正在运行:

 netstat -tap | grep mysql 

你应该看到这样的东西:

 $ sudo netstat -tap | grep mysql tcp 0 0 localhost:mysql *:* LISTEN 6639/mysqld 

如果您没有运行服务器,请通过以下命令启动守护程序:

 /etc/init.d/mysql restart 

这应该可以解决您的问题。