gpt4 book ai didi

mysql - 如何使用 node.js 连接到本地 mariadb 服务器

转载 作者:行者123 更新时间:2023-11-30 21:32:27 24 4
gpt4 key购买 nike

我正在尝试使用 node.js 连接到本地 mariadb 服务器。当我尝试连接时出现错误:

“错误:(conn=8, no: 1045, SQLState: 28000) 用户 'root'@'localhost' 的访问被拒绝(使用密码:NO)”

我不确定这是为什么,因为我在建立连接时设置了密码,并且我可以使用 root 密码登录到 mysql 服务器

 mysql -u root -p

我的代码是这样的:

var mysql = require('mariadb');

var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "8pJcpe/h0h_%",
port: 3306
})
.then(conn => {
console.log("connected" + conn.threadId);
})
.catch(err => {
console.log("got error " + err);
});

我也尝试过使用 3307 端口,但得到了这个错误:“错误:连接 ECONNREFUSED 127.0.0.1:3307”

当我尝试使用我正在使用的端口通过 ssh 连接到服务器时,我得到了这个不同的错误:“错误:(conn=-1,编号:45009,SQLState:08S01)套接字已意外关闭”

我是新手,需要一些帮助。谢谢。

最佳答案

一些关键思想:

  • MySQL 用户由用户主机标识。
  • 在 MySQL 中,localhost 表示本地套接字连接,而不是 TCP/IP 环回。

这个:

mysql -u root -p

将使用本地套接字连接;这将匹配 mysql.user 表行 user='root' and host='localhost'

强制建立 TCP/IP 连接:

mysql -h 127.0.0.1 -u root -p

这将匹配 mysql.user 中的一行,例如 user='root' and host='127.0.0.1',或 user='root' and host='%'

mysql.user 中的每一行都是一个单独的用户;可以有多行包含 user='root' 和不同的 host 值。这些行中的每一行代表不同的用户,每个用户都有自己的权限和密码(或身份验证方法)。


对于 mariadb node.js 驱动

使用 host 选项,我们将尝试建立 TCP/IP 连接。

要通过本地套接字文件获取连接(即相当于 mysql -u root -p,我们需要使用 socketPath 而不是 host选项。

https://mariadb.com/kb/en/library/nodejs-connection-options/


如果我们想要在 node.js 中建立 TCP/IP 连接,那么我们应该首先确保 mysql -h 127.0.0.1 -u root -p 连接正常。

关于mysql - 如何使用 node.js 连接到本地 mariadb 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55503193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com