Flask-SQLAlchemy缺少“ caching_sha2_password”身份验证模块

时间:2018-08-11 19:04:08

标签: python mysql flask sqlalchemy flask-sqlalchemy

我正在尝试遵循Flask-SQLAlchemy快速入门指南(http://flask-sqlalchemy.pocoo.org/2.3/quickstart/)。当我执行任何数据库操作(例如db.create_all()时,都会收到错误sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: The specified module could not be found.\r\n")

我知道这是由于MySQL8中的默认标识方法已更改。我打开了一个mysqlshell并运行了这些-

CREATE USER 'myapp'@'localhost' IDENTIFIES WITH mysql_native_password BY 'password';

GRANT ALL PRIVILEGES ON *.* 'myapp'@'localhost';

似乎一切正常。但是,即使在更新配置详细信息以将此新用户用于

app = Flask(__name__,static_url_path='')
app.config['SQLALCHEMY_DATABASE_URI']='mysql:////myapp:password@localhost/mydatabase'
db = SQLAlchemy(app)

相同的错误仍然存​​在。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

这不是“解决方案”,但是对于不幸的Google员工来说,这就是我所做的- 为了使用MySQL的官方python连接器,我卸载了python 3.7并恢复为python 3.6。我安装了pymysql,并将配置中的URI更改为mysql + pymysql://等。这似乎使我有了一个可以运行的应用程序。

答案 1 :(得分:0)

尝试一下:

app.config['SQLALCHEMY_DATABASE_URI']='mysql:////myapp:password@localhost/mydatabase?auth_plugin=mysql_native_password'

http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.engine.url.URL.params.query

答案 2 :(得分:0)

我通过在URL中使用 pymysql 方言解决了该问题:

<代码> mysql + pymysql:// root:root @ localhost:3306 / database