我试图连接到mysql数据库使用下面的代码。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'pass',
database : 'my_db',
insecureAuth : true
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
connection.end();
但我得到以下错误:
错误:er\u不支持身份验证模式:客户端不支持服务器请求的身份验证协议;考虑升级mysql客户端
我已经在本地安装了mysql-installer-community-8.0.11.0。
我需要安装其他连接器来连接数据库吗?
5条答案
按热度按时间qq24tv8q1#
如果在安装mysql(8.x)时选择mysql(5.x)的遗留密码加密,那么mysql(8.x)连接可以正常工作。如果我在安装过程中选择mysql(8.x)的强密码加密,它将无法工作。
uqjltbpv2#
我也遇到了同样的问题,这个解决方案对我很有效:
转到mysql工作台并单击当前数据库。
在“导航器”窗口(左侧)中,单击
Users and Privileges
.点击
Add Account
在用户列表的底部。给它另一个登录名(例如。
node_test
).将身份验证类型设置为
Standard
.套
Limit to Host Matching
到本地主机。设置新密码(例如。
coding-is-awesome
).结果代码如下:
brtdzjyr3#
我将尝试删除不安全的auth:true行,然后重试。
z9smfwbn4#
昨天我用mysql+nodejs处理docker容器时遇到了同样的问题。到目前为止,我还没有找到一个修复程序,但它与新的mysql版本(8.x)有些关系。在我用版本5重新安装mysql之后,一切都很好。
odopli945#
我在用https://hub.docker.com/r/mysql/mysql-server/
医生说
MYSQL_ONETIME_PASSWORD
:当变量为true时(这是其默认状态,除非MYSQL_ROOT_PASSWORD
已设置或MYSQL_ALLOW_EMPTY_PASSWORD
设置为true),根用户的密码设置为过期,必须更改才能正常使用mysql。只有MySQL5.6及更高版本才支持此变量。尝试设置
MYSQL_ROOT_PASSWORD
为您的docker环境。您可能还需要更改用户的身份验证模式。为我工作。
编辑:要检查设置了什么身份验证: