【发布时间】:2021-01-12 05:27:47
【问题描述】:
我从最新的 MariaDB 版本 10.4.14 中获得了备受讨论的 ER_NOT_SUPPORTED_AUTH_MODE,该版本安装在在 Digital Ocean droplet 上运行的 Ubuntu 20.04 上。上下文:
- 我可以远程(从我的开发 PC 上的 MySQL Workbench)和本地(从 SSH 运行 Ubuntu MariaDB 客户端)连接到 MariaDB 的 Ubuntu 实例。
- 当我的应用首次尝试查询数据库时,我的 Vue 应用(带有 Express 后端)收到 ER_NOT_SUPPORTED_AUTH_MODE 错误。
errno: 1251,
sqlMessage:
'Client does not support authentication protocol requested by server; consider upgrading MariaDB client',
sqlState: '08004',
fatal: true }
- 我的应用程序(相同的代码)在我的本地开发 PC 的 MariaDB 实例上运行没有问题,版本为:10.4.13。这几个月来一直很稳定。
我升级了 MariaDB 服务器和客户端。我在网上搜索了很多关于这个问题的活动,并尝试了最常见的修复方法,即更改 MariaDB 用户以使用 mysql_native_password 身份验证:
ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY PASSWORD('password')
我尝试了其他一些看起来可能相关的远景。这些都没有任何区别。我已经完成了 FLUSH PRIVILEGES,重新启动了服务器,我能想到的一切。至少尝试了 2 或 3 次以确保我做对了。尽管我已经使用 MariaDB 多年(包括在 Linux 上),但我不是 MariaDB 方面的专家,无法了解其他技巧。
在我放弃 MariaDB 并转而使用 MySQL(我在 Ubuntu 上使用早期版本)之前,我还能尝试什么?我需要通过 Ubuntu 部署,而不是 Windows 或 Raspbian Linux!
【问题讨论】:
-
最后我成功地在我的 Windows 开发 PC 上重现了这个错误。那是一种解脱。现在我需要弄清楚如何设置一个可以通过代码成功访问数据库的非root用户。
标签: mysql node.js vue.js mariadb