mysql - ECS 上的 WordPress - 无法连接到 mysql 容器

标签 mysql wordpress amazon-ecs

我正在尝试使用此处的任务定义在 ECS 上安装 Wordpress:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/example_task_definitions.html 。我在 ECS(2 个容器)上有以下任务 - json 格式:

{
    "ipcMode": null,
    "executionRoleArn": "arn:aws:iam::548086034478:role/wpstream-ecsTaskExecution",
    "containerDefinitions": [
        {
            "dnsSearchDomains": null,
            "logConfiguration": {
                "logDriver": "awslogs",
                "secretOptions": null,
                "options": {
                    "awslogs-group": "/ecs/wordpress-simple",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "ecs"
                }
            },
            "entryPoint": null,
            "portMappings": [
                {
                    "hostPort": 80,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "command": null,
            "linuxParameters": null,
            "cpu": 0,
            "environment": [],
            "resourceRequirements": null,
            "ulimits": null,
            "dnsServers": null,
            "mountPoints": [],
            "workingDirectory": null,
            "secrets": null,
            "dockerSecurityOptions": null,
            "memory": null,
            "memoryReservation": null,
            "volumesFrom": [],
            "stopTimeout": null,
            "image": "wordpress",
            "startTimeout": null,
            "dependsOn": null,
            "disableNetworking": null,
            "interactive": null,
            "healthCheck": null,
            "essential": true,
            "links": [
                "mysql"
            ],
            "hostname": null,
            "extraHosts": null,
            "pseudoTerminal": null,
            "user": null,
            "readonlyRootFilesystem": null,
            "dockerLabels": null,
            "systemControls": null,
            "privileged": null,
            "name": "wordpress"
        },
        {
            "dnsSearchDomains": null,
            "logConfiguration": {
                "logDriver": "awslogs",
                "secretOptions": null,
                "options": {
                    "awslogs-group": "/ecs/wordpress-simple",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "ecs"
                }
            },
            "entryPoint": null,
            "portMappings": [],
            "command": null,
            "linuxParameters": null,
            "cpu": 0,
            "environment": [
                {
                    "name": "MYSQL_ROOT_PASSWORD",
                    "value": "cretu"
                }
            ],
            "resourceRequirements": null,
            "ulimits": null,
            "dnsServers": null,
            "mountPoints": [],
            "workingDirectory": null,
            "secrets": null,
            "dockerSecurityOptions": null,
            "memory": null,
            "memoryReservation": null,
            "volumesFrom": [],
            "stopTimeout": null,
            "image": "mysql",
            "startTimeout": null,
            "dependsOn": null,
            "disableNetworking": null,
            "interactive": null,
            "healthCheck": null,
            "essential": true,
            "links": null,
            "hostname": null,
            "extraHosts": null,
            "pseudoTerminal": null,
            "user": null,
            "readonlyRootFilesystem": null,
            "dockerLabels": null,
            "systemControls": null,
            "privileged": null,
            "name": "mysql"
        }
    ],
    "memory": "512",
    "taskRoleArn": "arn:aws:iam::548086034478:role/wpstream-ecsTaskExecution",
    "family": "wordpress-simple",
    "pidMode": null,
    "requiresCompatibilities": [
        "EC2"
    ],
    "networkMode": "bridge",
    "cpu": "256",
    "inferenceAccelerators": [],
    "proxyConfiguration": null,
    "volumes": [],
    "placementConstraints": [],
    "tags": []
}

但由于某种原因worpdress容器无法连接到mysql容器。当我通过公共(public) IP 访问它时,我收到“建立数据库连接时出错”并在日志中

MySQL 连接错误:(2002) 连接被拒绝

我尝试在 WordPress 容器上添加 WORDPRESS_DB_HOST、WORDPRESS_DB_USER、WORDPRESS_DB_NAME 和 WORDPRESS_DB_PASSWORD 环境变量,但没有成功。

你能告诉我我做错了什么吗? 谢谢

最佳答案

该问题是由新的mysql版本(8.0)更改了身份验证方法引起的。解决方案是使用较旧的 mysql 镜像 (5.17) 或在创建容器时使用此命令

default-authentication-plugin=mysql_native_password

关于mysql - ECS 上的 WordPress - 无法连接到 mysql 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57893325/

相关文章:

html - 正确的字体粗细加载然后在半秒后改变?

php - 如何包含 WordPress wp-config.php 来访问 MySQL 数据库信息

amazon-web-services - 我们可以在 AWS ECS docker 容器上挂载 EFS 吗?

mysql - MySQL主从复制期间数据的AES加密

php - 我如何从数据库中检索数据,条件是数据应在 6 个月之前添加,并且产品数量应高于 200

mysql - Wordpress 负载过重时 MySQL 周期性锁定

php - 获取 eloquent 前 3 天发表最后评论的用户

Wordpress Gutenberg FSE 恼人的内联 CSS

amazon-web-services - 我的Docker化微服务的动态端口设置

amazon-web-services - AWS Fargate 资源初始化错误 : unable to pull secrets or registry auth: pull command failed: : signal: killed