SequelizeConnectionError:客户端不支持服务器请求的身份验证协议。考虑升级MariaDB客户端

Ima*_*var 9 mysql database mariadb node.js sequelize.js

我在具有Mariadb(使用readline 5.2的debian-linux-gnu(i686)的mysql Ver 15.1 Distrib 10.0.29-MariaDB,使用readline 5.2)的nodejs(v6.11.0)应用程序上使用Sequelize版本4.3.0。当应用程序启动并调用函数时: Sequelize.sync(); 然后,sequelize连接管理器引发以下错误:

未处理的拒绝SequelizeConnectionError:客户端不支持服务器请求的身份验证协议。考虑升级MariaDB客户端

at Utils.Promise.tap.then.catch.err (/home/dariksoft/cars/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:146:17)
at tryCatcher (/home/dariksoft/cars/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/dariksoft/cars/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/dariksoft/cars/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/home/dariksoft/cars/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/home/dariksoft/cars/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/home/dariksoft/cars/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/home/dariksoft/cars/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/home/dariksoft/cars/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
Run Code Online (Sandbox Code Playgroud)

我更新了mariadb-server和mariadb-client,但是问题已经存在!

有人可以帮助我解决这个问题吗?

Ima*_*var 5

我找到了答案:

登录到mysql命令行并编写以下命令:

use mysql;
Run Code Online (Sandbox Code Playgroud)

update user set authentication_string=password(''),plugin='mysql_native_password' where user='root';

  • 带有 sql_mode=TRADITIONAL 的 MySQL 8.0.11 不喜欢这种语法。下面的工作无需转到系统数据库,`alter user 'USER'@'localhost' 用 mysql_native_password 标识为 'PASSWORD'`。 (7认同)