拒绝用户访问(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 访问被拒绝