无法使用172.19.0.1连接到mysql容器

时间:2020-10-18 23:00:56

标签: mysql docker

我尝试使用docker-compose启动MySQL服务器。这是docker-compose.yaml部分:

  mysql:
    image: debezium/example-mysql
    ports:
     - "3306:3306"
    environment:
     - MYSQL_ROOT_PASSWORD=debezium
     - MYSQL_USER=mysqluser
     - MYSQL_PASSWORD=mysqlpw

此外,我通过设置启动了django应用程序

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ.get('MYSQL_DB_NAME', default='db_eddy_backend'),
        'USER': os.environ.get('MYSQL_USER', default='eddy_backend'),
        'PASSWORD': os.environ.get('MYSQL_PASSWORD', default='mysqlpassword'),
        'HOST': os.environ.get('MYSQL_HOST', default='127.0.0.1'),
        'PORT': os.environ.get('MYSQL_PORT', default='3306'),
    }
}

但是Django启动后会弹出一条错误消息,提示

django.db.utils.OperationalError: (1045, "Access denied for user 'eddy_backend'@'172.19.0.1' (using password: YES)")

怎么了?以及如何处理?

感谢nbk的帮助,我尝试了

我尝试过

docker exec -it 4ac01eb11bf7 mysql -uroot -p, 
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'debezium'; 

但输出是

Query OK, 0 rows affected. 

django应用仍然遇到相同的问题

1 个答案:

答案 0 :(得分:0)

您应该检查同一网络上是否存在mysql和django服务

查看您的docker网络:

sudo docker network ls  

检查您的网络,并确保两个服务都在同一网络上运行

sudo docker inspect <the_name_net>

*对于查看正确的ip服务也很重要:

sudo docker inspect <the_net_id> | jq '.[].NetworkSettings.IPAddress'