为什么在Ubuntu 14.04上安装MySQL 5.6失败?


30

出于好奇,我想看看Ubuntu 14.04上的MySQL 5.6。根据本文,安装过程看起来应该很简单直接。因此,我启动了运行Ubuntu 14.04(64位)的AWS EC2微服务器,登录到我的原始实例(通过PuTTY),并发出了以下命令:

$ sudo apt-get update
$ sudo apt-get build-dep mysql-server-5.6
$ sudo apt-get install mysql-server-5.6

(前两个命令是绝望的举动,因为apt-get install以前仅运行一个命令是行不通的。但是即使使用了这三个命令,安装步骤仍然无法执行。)

根据以上引用的文章,在我期望的那一点上,将从最终命令中看到以下输出:

mysql start/running, process 2355  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  

我得到了这个:

start: Job failed to start  
invoke-rc.d: initscript mysql, action "start" failed.  
dpkg: error processing package mysql-server-5.6 (--configure):  
 subprocess installed post-installation script returned error exit status 1  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  
Errors were encountered while processing:  
 mysql-server-5.6  
E: Sub-process /usr/bin/dpkg returned an error code (1)

谁能看到哪里出了问题?


1
日志说什么?猫/var/log/mysql.err
佩特

Answers:


22

您遇到的问题与此错误报告相同。启动失败似乎是因为默认的MySQL 5.6配置所需的内存超出了微型实例中的内存。

解决该错误的方法似乎是执行以下操作之一:

  • 增加您的EC2实例中的内存量
  • 为MySQL的max_connections变量设置一个较小的值

1
是的,这个问题恰好是该错误报告中显示的错误。谢谢!到目前为止,我尝试了建议的快速修复方法,该方法是确保/etc/apparmor.d/local/usr.sbin.mysqld存在,但不幸的是没有这样做。因此,现在我将尝试使用更多内存进行安装。
WebLearner 2014年

1
在下一次尝试中,我没有使用EC2实例,而是使用Oracle VM Virtualbox创建了具有2GB内存的Ubuntu 14.04虚拟机,并且在这种环境下,使用顺利进行了MySQL 5.6安装sudo apt-get install mysql-server-5.6。因此,显然,EC2微型实例似乎没有足够的内存来使用apt-get安装MySQL 5.6!
WebLearner 2014年

1
在错误报告中增加了一条注释,建议在安装MySQL 5.6之前减少MySQL的max_connections。我采纳了这个建议,并向/etc/mysql/conf.d中添加了一个.cnf文件,该文件包含两行:“ [mysqld]”和“ max_connections = 20”。有了该文件后,我在新的EC2 micro上的MySQL安装就完成了。(根据文档,max_connections的默认值为151。将其设置为20可能是极端的。但是至少它表明可以安装MySQL。)
WebLearner 2014年

有关其他信息:我检查了/var/lib/dpkg/info/mysql-server-5.6.postinst,发现可以运行该脚本来重现失败的确切步骤
shakaran 2015年

它正在为我的游民工作,我已经设置了1G RAM并修复了它。谢谢。:D
黎楚祥

24

初始化小型VPS时遇到相同的问题。该问题是由较小的内存引起的。因此,无需花费额外的钱来增加不需要的内存,您只需创建交换文件即可帮助安装。是的,交换很慢,但是您所要做的就是完成安装。

在Ubuntu 14.04上,我执行以下操作来解决该问题:

创建一个4G交换文件:

sudo fallocate -l 4G /swapfile

将其权限更改为只有root才能访问和更改:

sudo chmod 600 /swapfile

交换它:

sudo mkswap /swapfile

启用:

sudo swapon /swapfile

现在,您可以尝试再次安装mysql,这次应该可以成功。请记住,在删除之前的不成功安装之前,请先将其删除。


是的,完美的答案。绝对棒
Wren

3

我遇到了同样的问题。虽然我为我的VM分配了足够大的12Gb内存,但是仍然出现问题。在花费了一段时间后,发现默认的apt get缺少了一些配置转换和工具转换包。

MySQL apt存储库提供了一种简单方便的方法来使用来安装和更新带有最新软件包的MySQL产品apt-get。这是您必须遵循的:

  1. 添加MySQL APT存储库首先,将MySQL apt存储库添加到系统的软件存储库列表中。跟着这些步骤:

    • 转到http://dev.mysql.com/downloads/repo/apt/上的MySQL apt信息库的下载页面。

    • 选择并下载发行包。

    • 使用以下命令安装下载的发行软件包,并用下载的软件包的名称替换version-specific-package-name(如果未在软件包所在的文件夹中运行该命令,则以其路径开头):

      sudo dpkg -i /PATH/version-specific-package-name.deb
      

    请注意,相同的软件包可在所有受支持的Debian和Ubuntu平台上使用。

    • 在安装软件包的过程中,系统将要求您选择要安装的MySQL服务器和其他组件(例如MySQL Workbench)的版本。如果不确定要选择哪个版本,请不要更改为您选择的默认选项。如果您不想安装特定的组件,也可以不选择任何一个。在为所有组件做出选择之后,选择确定以完成发行包的配置和安装。

    您以后可以随时更改版本选择;
    有关说明,请参见选择主要发行版本。

    • 使用以下命令从MySQL APT存储库更新软件包信息(此步骤为必需步骤):

      sudo apt-get update
      
  2. 使用APT安装MySQL

    • 通过以下命令安装MySQL:

      sudo apt-get install mysql-server
      

这将安装用于MySQL服务器的软件包,以及用于客户端和数据库公用文件的软件包。

在安装过程中,对话框有两个请求:为MySQL安装的root用户提供密码。

  1. 启动和停止MySQL服务器

安装后,MySQL服务器将自动启动。-您可以使用以下命令检查MySQL服务器的状态:

sudo service mysql status
  • 使用以下命令停止MySQL服务器:

    sudo service mysql stop
    
  • 要重启MySQL服务器,使用以下命令:

    sudo service mysql start
    

我遵循了这个http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install。这样可以顺利进行,并下载了所有软件包并成功安装mysql 5.6


谢谢大卫。这很有道理。我已将答案更改为更详细的步骤。谢谢。
里特什

+1可改善答案。
大卫·佛斯特

最后是我……真的是我吗?:)
迅速

2

就我而言,我添加了

innodb_buffer_pool_size = 20M

/etc/mysql/my.cnf


1
用户在安装MySQL而不使用MySQL时遇到问题。

谢谢,我已经阅读了问题)在安装过程中遇到了同样的问题。实际上安装已经完成,并且mysql已经可以作为服务访问,我们可以运行它。但是,在安装过程的最后一步(启动mysqld)中,我们捕获了此烦人的错误。
maxkoryukov


1

我在Ubuntu 15.10上遇到了此问题。对我来说,这不是内存问题(我有2GB内存和18GB交换空间,总共只使用了300MB)。

在我的情况下,dpkg正在寻找/etc/mysql/conf.d,它不存在(但是/etc/mysql/mysql.conf.d确实存在!)。重新安装mysql并手动创建文件夹/etc/mysql/conf.d解决了我的问题。

这到底是怎么发生的?我不知道。我几乎不想分享我的答案,因为我敢打赌这种解决方案特定于我的计算机。

我使用实用程序解决了这个问题,strace对于冗长的细节来说,这对于此类事情来说非常理想。

我这样使用它:

  • 按下ctrlc一半后apt-get install mysql-server,我不得不运行dpkg --configure -a以完成安装。

  • 我跑了strace 2>/tmp/trace dpkg --configure -a。这使我成为了一个不错的strace日志/tmp/trace

  • 我浏览了日志,尤其是从底部开始,该日志失败了。

  • 我注意到它尝试访问/etc/mysql/conf.d,并得到错误代码ENOENT,没有这样的文件或目录

对于任何想尝试的人,请执行strace 2>/tmp/trace (command)和grep ENOENT。正如我所说,此解决方案可能特定于我的计算机,但您可能想尝试一下。


0

就我而言,我需要做的就是进行一些更改,my.cnf然后删除两个名为ib_logfile0和的日志文件ib_logfile1,然后启动mysql。

service mysql start

无需重新安装mysql,只需删除这两个日志文件并重新启动mysql服务器

以下是我所做的更改my.cnf

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 

请为您的答案添加更多内容,以便其他人可以关注。
George Udosen'1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.