此问答线程中评分最高的答案在很大程度上是准确/有效的,但至少可以说是无组织的。然而,这里有一个解决方案;解决方案是在三个答案中找到的点点滴滴。为了提供一个单一帖子中存在的答案和解决方案更易于阅读和解释,并且全面更有帮助和节省时间,我将尝试用清晰、简洁、有序的说明来回答问题涵盖了 Ubuntu 用户遇到的整个问题。此外,我将添加其他答案中未包含的必要信息,以了解正在解决的问题。就像这个问题不是 SQL 问题,它是一个 Ubuntu。使读者清楚持久性的问题是什么;“ROOT”用户在 Ubuntu 中没有密码。Ubuntu 用户使用 sudo 命令,并通过对几乎所有内容使用 sudo cmd 的许可来组织权限,也有例外,并且有一个 Ubuntu Root 用户选项,但现在在这里讨论这些事情无济于事。需要注意的重要事项如下:
- Ubuntu 缺少“根密码”,这就是为什么遇到我们正在讨论的问题的每个人都运行 Ubuntu OS/SHELL 发行版的原因。我们不能给 Ubuntu SHELL 一个“ROOT PASSWORD”,但是,我们可以,而且我们将给我们的“MYSQL-COMMUNITY-SERVER”一个“ROOT PWD”。
首先你需要 NPM、NodeJS、MySql 和 NPM 的 MySql 驱动程序。如果您还没有它们,您甚至不应该阅读本文,因为您甚至无法 100% 知道您要解决的问题是否是这样的……
...如果您确实拥有列表中的所有内容,并且正在运行 Ubuntu 发行版,并且收到如下所示的错误身份验证消息和连接错误消息
- 错误: (28000): 用户 'ajc'@'localhost' 访问被拒绝
- ERROR: ERROR_NOT_SUPPORTED_AUTH_MODE: 客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端
- '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端
那么您可能来对地方了。
let mysql = require('mysql');
let connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '********',
database : 'DB_App_00',
});
connection.connect(function(err) {
if (err) {
return console.error('error: ' + err.message);
}
console.log('Connected to the MySQL server.');
});
现在打开一个终端窗口,并进行典型的更新和升级,这很重要,这就是为什么每个人都要求你这样做。
~$: sudo apt update
~$: sudo apt upgrade
let connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '********', database : 'DB_App_00', });
现在输入以下cmd
~$: sudo mysql -u root
- 它应该提示你输入你的 Ubuntu 密码,输入它并 [ENTER]。
现在这是可以被视为药物和/或解决问题的方法的步骤。您的终端应该是打开的,并且您应该在 MYSQL Server 中,在用户“root”下。终端应该让光标在空白的 mysql 命令行上闪烁。在 CMDL 中复制并粘贴:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ChoosePassword';
mysql> FLUSH PRIVILEGES;
~$: mysql -u root -p
……你应该进去了,现在退出。
mysql>exit
- 返回到您的“testsql.js”文件,将用户凭据更改为 root,将密码更改为密码,将有效数据库更改为主机,并将主机更改为 localhost,除非您对不同的主机名有独特的需求。
let connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '********',
database : 'DB_App_00',
});
现在使用 node 运行 node 测试文件
~$: node testsql.js
如果没有显示已连接,则说明您做错了,但如果一切顺利,您应该连接。在我开始工作之前需要付出一些努力,但是这个答案应该可以为您节省一些时间来阅读所有其他一半的书面答案。