我尝试重启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
答案 0 :(得分:2)
我回答自己的问题,帮助其他人解决同样的问题。
sudo service httpd restart
。 (我不知道为什么我应该做这两个步骤。)sudo chown -R mysql:mysql /var/lib/mysql
。 - 在输入此命令之前,请检查user=
中的/etc/my.cnf
选项。如果没有user=
选项,则user
为“mysql”。 (访问https://stackoverflow.com/a/21435052/1570534)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
。我希望它可以帮到你!
答案 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)设置实例时,我也遇到同样的问题。
我能够通过在实例中添加交换文件来解决此问题。
这是创建交换的步骤:
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1000
$ chmod 600 /swapfile
$ mkswap /swapfile
$ swapon /swapfile
$ swapon -s
/etc/fstab
文件来启用交换文件:$ vi /etc/fstab
$ /swapfile swap swap defaults 0 0