好吧,所以我已经试了一段时间让这个工作起来。这是我从头到尾运行的一行命令,我得到了如下所示的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)")
这是回购https://github.com/Amertz08/flask-docker
看起来SqlAlchemy引擎没有找到正确的容器。'flask-docker'@'flaskdocker_web_1.flaskdocker_default'
是错误中显示的内容。在
也许我理解得不对,但我把mysql:mysql
链接到了我的docker-compose.yml
文件中
然后在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';
您为本地主机用户授予特权但您使用mysql作为
flask-docker'@'flaskdocker_web_1.flaskdocker_default
用户。在要解决此问题,授予flask docker'@'flaskdocker\u web_1.flaskdocker_default用户权限
我将在这里添加另一个解决方案,因为我在这个问题上遇到了困难。为了从Flask中访问数据库,我使用了
mysql-connector
(可以通过pip install mysql-connector
安装),输入mysql shell并运行以下代码ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
然后我使用以下配置连接到mysql:
我仍然不太清楚为什么需要这种解决方案,因为我以前从未有意在任何其他Python应用程序中使用过它,但是它似乎确实可以与libmysqlclient一起使用。在
src:https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html
相关问题 更多 >
编程相关推荐