Sequelize连接错误:客户端不支持服务器要求的认证协议;考虑升级MariaDB客户端。

11

我正在使用Sequelize版本4.3.0在nodejs(v6.11.0)应用程序中,该应用程序在Ubuntu 16.04上使用Mariadb(mysql Ver 15.1 Distrib 10.0.29-MariaDB, for debian-linux-gnu (i686) using readline 5.2)。当应用程序启动并调用函数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)

我更新了mariadb-server和mariadb-client,但问题仍然存在!

有人能帮我解决这个问题吗?

3个回答

5
我找到了答案:
登录到mysql命令行并输入以下命令:
use mysql;

更新用户表,将root用户的认证字符串设为空,插件选择mysql_native_password。


7
MySQL 8.0.11使用sql_mode=TRADITIONAL时不支持该语法。以下语句可避免访问系统数据库:alter user 'USER'@'localhost' identified with mysql_native_password by 'PASSWORD' - eel ghEEz

3

如果您使用的是更高版本的MySQL,您无需使用密码函数。相反,您可以按照以下方式编写:

use mysql;

update user set authentication_string='new_root_password', plugin='mysql_native_password' where user='root';

flush privileges;

2
在我的情况下,我需要输入以下3行代码:
use mysql;
update user set authentication_string=password('new_root_password'), plugin='mysql_native_password' where user='root';
flush privileges;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接