拒绝用户访问(NodeJS 和 MySQL)

Posted

技术标签:

【中文标题】拒绝用户访问(NodeJS 和 MySQL)【英文标题】:Access Denied for User (NodeJS & MySQL) 【发布时间】:2017-02-02 14:51:15 【问题描述】:

我正在尝试连接到我在我的域中拥有的数据库。我创建了一个名为 public_guests 的用户,它可以访问这个数据库。

我正在使用 NodeJS 创建连接,但出现以下错误。

ER_ACCESS_DENIED_ERROR:用户访问被拒绝

错误后面是我的 IP 地址等

这是我的代码:

mysql = require("mysql");

var connection = mysql.createConnection(
    host: "humadshah.com",
    username: "public_guests",
    password:"hello",
    databse:"my_quotes"
);

connection.connect(function(error)
    if(error)
        console.log("Couldn't connect :(    Error: " + error);
     else 
        console.log("Connected successfully~!");
        
);

我之前从未使用过数据库,所以我认为这是一个非常愚蠢的错误。

【问题讨论】:

我会为在一个小时内解决这个问题的人买一瓶啤酒 您的代码无关紧要。您的密码错误,您的用户不允许使用该 IP,或其他原因。此外,您的 MySQL 主机对整个世界开放以进行连接。这不是很好的做法。虽然您确实需要适当的凭据才能进入,但总有一天会发现一个新的 MySQL 漏洞。除非您必须这样做,否则不要如此广泛地打开它。最后,如果这是你的第一个数据库,我可以推荐 PostgreSQL 吗?最新版本的 Postgres 支持文档样式存储以及列式存储,并具有许多其他不错的功能。 @Drew 看起来他们正在使用 GoDaddy。 GoDaddy 将默认密码设置为随机密码,因此可能需要一个多小时。 ;-) 【参考方案1】:

只需从工作台创建一个新用户并将其用于您的 nodejs 项目

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

【讨论】:

【参考方案2】:

在我的例子中,有两个 JSON 对象。首先是测试,其次是开发,但 dbPassword 不一样。我将它们更改为一个唯一的密码,然后它就可以工作了。这类问题通常发生在初学者身上。

【讨论】:

【参考方案3】:

它的权限问题,授予用户所需的权限它将起作用。

【讨论】:

【参考方案4】:

在我看来,这不是Node.js的问题。

这是用户在特定 IP 地址的权限问题, 并在错误消息中说明:

Access denied for user @some IP

因此,请尝试为您的Node.js 实例运行端口xxx.xx.xx.xx 的IP 提供您的root permission

【讨论】:

有没有办法可以授予所有 IP 的权限?我希望任何人都可以从任何地方访问此数据库 请看这里***.com/questions/8348506/… @HumanCyborgRelations 是的,有可能……这真的是你想要的吗?使用user@% 感谢您的回复!是的,这行得通。我将只允许用户选择表中的数据,而不以任何方式更改它们。有没有我应该担心的风险? @HumanCyborgRelations 我想这取决于这些表中的内容,以及您对 MySQL 服务器安全的确定程度。至少,很容易占用您的服务器,以便其他人无法访问数据。锁之类的东西真的很烦人。

以上是关于拒绝用户访问(NodeJS 和 MySQL)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:用户'userName'@'localhost'的访问被拒绝

TestContainers 和 Mysql:用户“@'172.17.0.1”的访问被拒绝(使用密码:否)

用户'root'@'localhost'的Rails和Mysql2访问被拒绝(使用密码:否)

用户'root'@'localhost'的MYSQL访问被拒绝

#1045 - 用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)MAMP MySQL 访问被拒绝

MySQL Python客户端得到1045(28000):用户'root'@'localhost'的访问被拒绝