amazon linux上的mysql - MySQL守护程序无法启动

时间:2016-01-27 07:06:58

标签: mysql amazon-ec2

我尝试重启EC2实例和sudo service httpd restart

但我仍然收到这条消息:

[ec2-user@ip-* ~]$ sudo service mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

我也收到了这条消息:

[ec2-user@ip-* ~]$ mysqld
160127  7:01:48 [Note] mysqld (mysqld 5.5.46) starting as process 2745 ...
160127  7:01:48 [Warning] Can't create test file /var/lib/mysql/ip-*.lower-test
160127  7:01:48 [Warning] Can't create test file /var/lib/mysql/ip-*.lower-test
160127  7:01:48 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
160127  7:01:48 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
160127  7:01:48 InnoDB: The InnoDB memory heap is disabled
160127  7:01:48 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160127  7:01:48 InnoDB: Compressed tables use zlib 1.2.8
160127  7:01:48 InnoDB: Using Linux native AIO
160127  7:01:48 InnoDB: Initializing buffer pool, size = 128.0M
160127  7:01:48 InnoDB: Completed initialization of buffer pool
160127  7:01:48  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

我不知道该怎么做..

干杯!

修改

(+我也使用亚马逊RDS。)

现在,我也尝试了sudo chown -R mysql:mysql /var/lib/mysql

但是

[ec2-user@ip-* ~]$ mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

[ec2-user@ip-* ~]$ ls -lh /var/lib/mysql/
합계 29M
-rw-rw---- 1 mysql mysql 5.0M  1월 27 06:52 ib_logfile0
-rw-rw---- 1 mysql mysql 5.0M  1월 27 06:12 ib_logfile1
-rw-rw---- 1 mysql mysql  18M  1월 27 06:52 ibdata1
drwx------ 2 mysql mysql 4.0K  1월 20 07:03 mysql
drwx------ 2 mysql mysql 4.0K  1월 20 07:03 performance_schema
drwx------ 2 mysql mysql 4.0K  1월 20 07:03 test

5 个答案:

答案 0 :(得分:2)

我回答自己的问题,帮助其他人解决同样的问题。

我通过以下步骤解决了这个问题:

  1. 重新启动您的EC2实例。
  2. 输入sudo service httpd restart。 (我不知道为什么我应该做这两个步骤。)
  3. 输入sudo chown -R mysql:mysql /var/lib/mysql。 - 在输入此命令之前,请检查user=中的/etc/my.cnf选项。如果没有user=选项,则user为“mysql”。 (访问https://stackoverflow.com/a/21435052/1570534
  4. innodb_buffer_pool_size内的/etc/my.cnf选项从128 (can be different)更改为500M。如果您的innodb_buffer_pool_size中没有/etc/my.cnf选项,请在[mysqld]部分添加innodb_buffer_pool_size=500M
  5. 我希望它可以帮到你!

答案 1 :(得分:2)

按照今天,具有0.5GiB内存的nano实例不允许运行mysqld-它们没有足够的内存。运行具有1GiB内存的微型实例可以完全解决该问题。我认为AWS的人员应该在LAMP安装说明中对此进行记录,因为这项研究使我花了几个小时甚至一天的时间才知道。

答案 2 :(得分:0)

如果问题出在Amazon Linux OS中,请检查您是否有免费交换。 我遇到了同样的问题,当我添加更多swap,mysql服务开始工作。 您可以在此处查看更多内容http://www.linuxblackmagic.com/2018/04/mysql-daemon-failed-to-start-in-amazon.html

这肯定会对你有用。 Shivin Vijai

答案 3 :(得分:0)

当我尝试使用Amazon t3.nano机器时,我遇到了类似于@Michael Zelensky的问题。 (FWIW t3.micro不需要进行任何额外的调整,但是我试图查看“我能走多低”)

我能够找到目前似乎可行的解决方法。只需添加: table_definition_cache=400 ..到[mysqld]中的/etc/my.cnf部分。显然,这降低了一些内存使用量,足以让我执行service mysqld start并启动了服务(以及我的Wordpress网站:))

感谢一些AWS支持专家以及这个网站,帮助我弄清楚了这一点:http://www.tocker.ca/2014/03/10/configuring-mysql-to-use-minimal-memory.html

答案 4 :(得分:0)

在Lightsail上以最低成本的实例(512MB,1个vCPU,20 GB SSD)设置实例时,我也遇到同样的问题。

我能够通过在实例中添加交换文件来解决此问题。

这是创建交换的步骤:

  1. 使用dd命令在根文件系统上创建交换文件,其中“ bs”是块大小,“ count”是块数。在此示例中,交换文件为1 GB:
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1000
  1. 更新交换文件的读写权限:
$ chmod 600 /swapfile
  1. 设置Linux交换区域:
$ mkswap /swapfile
  1. 通过将交换文件添加到交换空间,使交换文件可立即使用:
$ swapon /swapfile
  1. 验证过程是否成功:
$ swapon -s
  1. 在启动时通过编辑/etc/fstab文件来启用交换文件:
$ vi /etc/fstab
$ /swapfile swap swap defaults 0 0