建立数据库连接 Amazon EC2 时出错 - 移动我的 wordpress 博客后
Posted
技术标签:
【中文标题】建立数据库连接 Amazon EC2 时出错 - 移动我的 wordpress 博客后【英文标题】:Error establishing a database connection Amazon EC2 - after moving my wordpress blog 【发布时间】:2011-11-11 00:54:16 【问题描述】:将我的 wordpress 博客移动到 Amazon EC2 后,我收到错误消息:“建立数据库连接时出错”。我检查了 wp-config.php 文件,设置正常(本地主机、密码和用户名)。
我在这里阅读了许多问题和答案,但没有任何帮助。
我有 shell 访问权限,所以我可以检查您需要我做的所有事情。也许我应该查看phpmyadmin的配置文件,看看那里有哪些db连接设置,因为phpmyadmin可以工作,但我不知道它在哪里。
谢谢
【问题讨论】:
您能告诉我们数据库在您的 wp-config.php 中的配置位置吗?如果它在本地主机上运行,您是否检查过 mysql 是否在本地运行?如果它在远程主机上运行,是否可以从您的 ec2 实例访问它?通常,如果地址是 10.x.x.x 或 192.168.x.x,它可能不起作用(除非您有基础设施设置,但无论如何您都可以尝试 ping 它)。如果它是一个 dns 名称,还请检查您是否可以从您的 ec2 实例中解析它。 我到这里是因为 sym 链接到服务器上的不同位置。在它偶尔发生之前,这仍然令人担忧,重新启动就可以了,但它不是很好,并且建议我们为我们的 ec2 用户 IMO 进行错误配置。 【参考方案1】:确保您已在 EC2 上安装 mqsql 客户端以建立与 RDS MySQL(或任何 RDS DB)的连接。并安装数据库依赖项,您需要从 Apache 访问 RDS。 点击链接:https://aws.amazon.com/getting-started/hands-on/deploy-wordpress-with-amazon-rds/5/
【讨论】:
【参考方案2】:下面为我修复了它:
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2 &&
service httpd restart
【讨论】:
【参考方案3】:请点击您的 RDS 实例的安全组。然后点击入站 >Edit add "All TCP" for 0.0.0.0/0
【讨论】:
【参考方案4】:我通过向我的实例添加交换解决了这个问题:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
如果您需要超过 1024,则将其更改为更高的值。
要在重启后默认启用它,请将此行添加到 /etc/fstab:
swap /var/swap.1 swap defaults 0 0
要检查您的实例是否正在使用交换,请运行以下命令:
cat /proc/meminfo
结果:
ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal: 604340 kB
MemFree: 8524 kB
Buffers: 3380 kB
Cached: 398316 kB
SwapCached: 0 kB
Active: 165476 kB
Inactive: 384556 kB
Active(anon): 141344 kB
Inactive(anon): 7248 kB
Active(file): 24132 kB
Inactive(file): 377308 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal:1048572 kB
无交换:1048572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 148368 kB
Mapped: 14304 kB
Shmem: 256 kB
Slab: 26392 kB
SReclaimable: 18648 kB
SUnreclaim: 7744 kB
KernelStack: 736 kB
PageTables: 5060 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1350740 kB
Committed_AS: 623908 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7420 kB
VmallocChunk: 34359728748 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
【讨论】:
【参考方案5】:您可能会考虑关闭您的端口。
在 AWS 中,您可以在安全组中执行此操作。 例如,如果您打开了 SSH、HTTP 和 HTTPS 端口(22、80 等),请尝试仅对您的 IP 地址关闭它们。 (默认为 0.0.0.0,对所有人开放)。您尤其应该对 SSH 端口执行此操作。
机器人总是试图获得对开放端口的访问权……如果不是更多的话,每天都会攻击你数千次,以测试你是否有开放的漏洞。根据您的实例的大小,您可能无法处理此流量。这可能是您的服务器不断崩溃的原因。
【讨论】:
【参考方案6】:最近遇到了同样的问题,我使用的是 AWS 免费套餐帐户。 ec2 实例是 t2.micro,它没有预先配置交换。当我安装 wordpress 的东西时,内存使用率总是更高,即使我什么也不做。有一天,我运行sudo yum update
命令,bash 显示-bash: fork: Cannot allocate memory
错误。我的网站也总是得到error establishing a database connection
。
我认为根本原因是内存使用率高。您可以按照此处的说明添加交换内存:How do you add swap to an EC2 instance?
【讨论】:
【参考方案7】:如果重启后服务器一直崩溃,也许你应该增加内存,将服务器从 t2.micro 升级到 t2.medium 为我解决问题。
【讨论】:
【参考方案8】:我有同样的错误。每次我的 EC2 服务器由于内存不足而重新启动时。 Mysql 没有通过显示“建立数据库连接错误”重新启动导致我的网站崩溃起初,我从 WHM 重新启动我的服务器,这立即修复了错误。下次服务器重新启动时错误返回。我还尝试在启动命令上 ssh 自动重启 mysql 数据库,但这不是问题。尽管我的安全组设置为接受所有流量,但我必须更改我的安全组以包含 mysql,并重新启动我的实例以修复错误。我不确定这是否适用于使用 EC2 的每个人。这对我有用
【讨论】:
【参考方案9】:数据库连接中的错误可能是由于 root 密码(如果您从浏览器连接)。通过执行 $mysql_secure_installation 来保护您的数据库,以休息您的根密码。在第一步中,您可以为 root 指定一个新密码。那么一切都应该可以正常工作了。
【讨论】:
【参考方案10】:在 ec2 中增加你的交换内存来解决这个问题。 http://digitizor.com/2011/02/06/create-swap-file-ubuntu-linux/
【讨论】:
我想知道要创建多少交换内存。创建交换内存的优缺点是什么。【参考方案11】:我的网站遇到了同样的错误,我刚刚重启了我的实例,瞧,问题解决了。
我的情况:
我正在使用亚马逊免费套餐,一些机器人请求了我的网站,由于连接数过多,sql 数据库无法满足负载。因此,我也安装了负载平衡器 :) 希望它有所帮助
【讨论】:
【参考方案12】:对我来说,只需重新启动 mysqld 服务即可。但是有一个问题,当我执行sudo service mysqld restart
时,MySql 服务停止但没有启动。 sudo services mysqld start
给出了 MySQL 守护程序无法启动错误。我花了很多时间尝试启动该服务,但我想真正的罪魁祸首是 httpd 服务。我停止了 httpd 服务sudo service httpd stop
。现在执行sudo service mysqld restart
和宾果,wordpress 网站重新上线(记得启动 httpd 服务)。这听起来有点蹩脚,但它起作用了,从我发现 MySQL DB 停止的原因有很多,查看日志并找出真正的原因是唯一对我有用的东西。
【讨论】:
有人对此有更深入的了解吗?这件事今天发生在我身上,所描述的修复方法与前面提到的完全一样。在重新启动数据库之前,我必须重新启动 httpd。我的日志没有显示任何错误,所以我对以后如何防止这种情况感觉不太好。 我有同样的问题。它一直在发生。 这非常适合。没有理由一开始它是怎么发生的,因为我没有碰这台机器。 这实际上经常发生在我身上,虽然上述解决方案有效,但我想知道是否有永久解决方案 如果在 EC2 t2.micro 数据库上使用 WordPress 做噩梦,为什么会发生这种情况,并且永久地跌倒尝试的交换文件,添加 cron 作业以重新启动。【参考方案13】:您没有说明您是否将博客从 myolddomain.com 移动到 mynewdomain.com,以及您使用的是普通 WordPress 还是多站点 WordPress。但这里有一些提示可能会有所帮助:
首先,您需要确保您的 wp-config.php 配置正确(数据库服务器、用户名、密码...)
其次,WordPress 使用数据库存储有关当前主机的一些信息,查看表 wp_site、wp_options、wp_sitemeta 并将包含 myolddomain.com 的所有行替换为 mynewdomain.com。
确保您的 EC2 安全组配置正确。
This article 也可能有帮助。
【讨论】:
【参考方案14】:我不确定您使用的是哪个发行版,所以这是我通常如何解决这些类型的问题。 1.安装一个名为nmap的程序(它扫描端口) 2.运行'nmap localhost'(如果它不是本地的,则将localhost替换为运行数据库的任何服务器) 3. 检查你的数据库(mysql)是否正在运行
如果没有,则执行“services mysqld restart”(这将重新启动 mysql 守护程序)的效果。如果这可以解决它,那么请查看该服务是否自动启动。如果您使用该命令出现错误,则可能没有安装 mysql。
【讨论】:
以上是关于建立数据库连接 Amazon EC2 时出错 - 移动我的 wordpress 博客后的主要内容,如果未能解决你的问题,请参考以下文章
在Amazon ECS EC2任务中启动userland proxy:0.0.0.0:25时出错
从 Amazon AWS EC2 服务器上的 Node.js 连接到 Redis 服务器时出错
在使用 route53 在云端连接后,Amazon Ec2 上的 Ci3 会话数据出现问题。在公共 DNS 上启动时工作