Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重新分配';主机';对于docker mysql实例的根用户_Mysql_Django_Docker_Docker Compose - Fatal编程技术网

如何重新分配';主机';对于docker mysql实例的根用户

如何重新分配';主机';对于docker mysql实例的根用户,mysql,django,docker,docker-compose,Mysql,Django,Docker,Docker Compose,我有两个docker实例,一个用于API,一个用于项目的DB。我可以毫无问题地运行这两个程序,但今天我不能。DB实例生成时没有问题,但由于以下错误,API无法与其通信: django.db.utils.OperationalError: (1130, "Host '172.x.x.x' is not allowed to connect to this MySQL server") 通过谷歌搜索,我检查了主机上的root用户,这给了我: SELECT host from mysql.user

我有两个docker实例,一个用于API,一个用于项目的DB。我可以毫无问题地运行这两个程序,但今天我不能。DB实例生成时没有问题,但由于以下错误,API无法与其通信:

django.db.utils.OperationalError: (1130, "Host '172.x.x.x' is not allowed to connect to this MySQL server")
通过谷歌搜索,我检查了主机上的root用户,这给了我:

SELECT host from mysql.user where User='root';
+-----------+
| host      |
+-----------+
| localhost |
+-----------+
1 row in set (0.00 sec)
下面是docker compose.yml:

version: "3"
services:
  db:
    container_name: db
    image: mysql:5.7
    ports:
      - "3336:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ***
      MYSQL_USER: ***
      MYSQL_PASSWORD: ***
      MYSQL_DATABASE: ***
    restart: always
    command:
      [
        "mysqld",
        "--character-set-server=utf8mb4",
        "--collation-server=utf8mb4_unicode_ci",
      ]
  api:
    container_name: api
    build:
      context: ../../
      dockerfile: ./etc/docker/Dockerfile
    ports:
      - "8000:8000"
    depends_on:
      - db
    restart: always
因此,我有几个问题:

  • 知道为什么API实例的IP发生了变化吗?我假设它已经改变了,因为从昨天起它就可以连接而没有问题

  • 有没有办法通过docker compose/Makefile解决这个问题?我能够ssh到DB实例中并手动更改主机,但这显然是不可持续的

  • 有没有办法将API实例的IP更改为
    localhost


  • 提前感谢。

    您的IP容器的IP可能已更改,这就是您无法连接的原因,请先验证


    您可以添加一个可以从任何ip连接到数据库的用户。

    如果我错了,请纠正我的错误,但我必须在每次构建容器时手动创建此用户。这对我来说不是很有用,但如果有一种方法可以自动化,它肯定会很有用。这个用户将自动创建,在容器的定义中,您应该这样做。