好吧,我已经尝试了一段时间才能让它发挥作用。这是我从头到尾运行的命令行,我收到如下所示的 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/