【问题标题】:SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MariaDB clientSequelizeConnectionError:客户端不支持服务器请求的认证协议;考虑升级 MariaDB 客户端
【发布时间】:2023-03-05 10:13:01
【问题描述】:

我在 nodejs(v6.11.0) 应用程序上使用 Sequelize 版本 4.3.0,该应用程序具有 Mariadb (mysql Ver 15.1 Distrib 10.0.29-MariaDB,用于 debian-linux-gnu (i686),使用 readline 5.2 ) 在 Ubuntu 16.04 上。 当应用程序启动并调用函数时: 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 但问题已经存在!

谁能帮我解决这个问题?

【问题讨论】:

    标签: mysql node.js database mariadb sequelize.js


    【解决方案1】:

    我找到了答案:

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

    use mysql;
    

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

    【讨论】:

    • MySQL 8.0.11 with sql_mode=TRADITIONAL 不喜欢这种语法。以下工作无需转到系统数据库alter user 'USER'@'localhost' identified with mysql_native_password by 'PASSWORD'
    【解决方案2】:

    在我的情况下,我需要输入以下 3 行:

    use mysql;
    update user set authentication_string=password('new_root_password'), plugin='mysql_native_password' where user='root';
    flush privileges;
    

    【讨论】:

      【解决方案3】:

      如果您使用的是更高版本的mysql,则不需要使用密码功能。相反,您可以将其编写如下

      use mysql;
      
      update user set authentication_string='new_root_password', plugin='mysql_native_password' where user='root';
      
      flush privileges;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-19
        • 2018-10-10
        • 2018-10-29
        • 2018-11-03
        • 2018-12-11
        相关资源
        最近更新 更多