compose中连接python和mysql

zf2sa74q  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(900)

之前,我使用其他mysql容器创建了命名卷和数据库:“mysql-db1”。
我无法从python连接到数据库。
我的.yml文件:

  1. version: '3.6'
  2. services:
  3. python:
  4. image: python:latest
  5. ports:
  6. - '80:80'
  7. volumes:
  8. - type: bind
  9. source: .
  10. target: /scripts
  11. command: tail -f /dev/null
  12. links:
  13. - 'mysql'
  14. mysql:
  15. image: mysql/mysql-server:latest
  16. ports:
  17. - '3306:3306'
  18. environment:
  19. MYSQL_ROOT_PASSWORD: root
  20. volumes:
  21. - type: volume
  22. source: mysql-db1
  23. target: /var/lib/mysql
  24. volumes:
  25. mysql-db1:
  26. external: true

我的简单python代码:

  1. import mysql.connector
  2. cnx = mysql.connector.connect(user='root', password='root', host='mysql', database='test1')
  3. cnx.close()

我可以使用以下方法进入数据库:

  1. $ docker-compose exec mysql bash
  2. # mysql -uroot -proot -Dtest1

错误:

  1. mysql.connector.errors.DatabaseError: 1130 (HY000): Host '172.18.0.3' is not allowed to connect to this MySQL server

哪里有问题?

6psbrbz9

6psbrbz91#

默认情况下,不允许根用户从外部访问数据库。使用图像环境变量创建用户并使用:

  1. db:
  2. restart: always
  3. image: mariadb
  4. container_name: myapp_db
  5. environment:
  6. - MYSQL_USER=myuser
  7. - MYSQL_PASSWORD=mypass
  8. - MYSQL_DATABASE=mydb
  9. - MYSQL_ALLOW_EMPTY_PASSWORD=yes
  10. ports:
  11. - 3306:3306

相关问题