我尝试使用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应用仍然遇到相同的问题
答案 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'