gpt4 book ai didi

python - 无法连接到 Docker 中的 MySql。抛出拒绝访问错误。 Flask-SqlAlchemy

转载 作者:行者123 更新时间:2023-11-28 16:22:30 28 4
gpt4 key购买 nike

好吧,我已经尝试了一段时间才能让它发挥作用。这是我从头到尾运行的命令行,我收到如下所示的 Access denied... 错误。

$ docker-compose up --build -d
$ docker exec -it flaskdocker_mysql_1 mysql -u root -p
mysql> CREATE DATABASE flask_docker;
mysql> CREATE USER `flask-docker`@`localhost` IDENTIFIED BY 'pass';
mysql> GRANT ALL PRIVILEGES ON flask_docker.* TO 'flask-docker'@'localhost';
mysql> exit
Bye
$ docker exec -it flaskdocker_web_1 python /usr/src/app/manage.py createdb
# rest of traceback
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, u"Access denied for user 'flask-docker'@'flaskdocker_web_1.flaskdocker_default' (using password: YES)")

这是 repo https://github.com/Amertz08/flask-docker

看起来 SqlAlchemy 引擎没有查看正确的容器。 'flask-docker'@'flaskdocker_web_1.flaskdocker_default' 是错误中显示的内容。

也许我没有理解正确,但我在我的 docker-compose.yml 文件中链接了 mysql:mysql

web:
restart: always
build: ./app
volumes:
- /usr/src/app/static
expose:
- "5000"
environment:
FLASK_CONFIG: 'production'
links:
- mysql:mysql
command: /usr/local/bin/uwsgi --ini uwsgi.ini

然后在 config.py 的配置对象中,我有以下...

MYSQL_USER = 'flask-docker'
MYSQL_PASS = 'pass'
MYSQL_HOST = 'mysql'
MYSQL_DB = 'flask_docker'
# Database info
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{usr}:{passwd}@{host}/{db}'.format(
usr=MYSQL_USER, passwd=MYSQL_PASS, host=MYSQL_HOST, db=MYSQL_DB
)

如有任何帮助,我们将不胜感激。

最佳答案

问题好像出在这里:

mysql> GRANT ALL PRIVILEGES ON flask_docker.* TO 'flask-docker'@'localhost';您为 localhost 用户授予权限

但是你使用 mysql 作为 flask-docker'@'flaskdocker_web_1.flaskdocker_default 用户。

解决这个问题,为 flask-docker'@'flaskdocker_web_1.flaskdocker_default 用户授予用户权限

关于python - 无法连接到 Docker 中的 MySql。抛出拒绝访问错误。 Flask-SqlAlchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39171970/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com