如何为 docker mysql 实例的根用户重新分配'host'



我有两个docker实例,一个用于API的,一个用于项目的数据库。我能够毫无问题地运行两者,但今天我无法运行。数据库实例构建没有问题,但由于以下错误,API 无法与其通信:

django.db.utils.OperationalError: (1130, "Host '172.x.x.x' is not allowed to connect to this MySQL server")

一些谷歌搜索导致我检查主机中的根用户,这给了我:

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

所以,我有几个问题:

  1. 知道为什么 API 实例的 IP 发生了变化吗?我假设它发生了变化,因为它从昨天开始就能够毫无问题地连接。

  2. 有没有办法通过docker-compose/Makefile解决这个问题?我能够通过 ssh 进入数据库实例并手动更改主机,但这显然是不可持续的。

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

提前谢谢。

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

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

最新更新