Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb MongoError:未授权db执行命令?当连接到socket.io时_Mongodb_Socket.io - Fatal编程技术网

Mongodb MongoError:未授权db执行命令?当连接到socket.io时

Mongodb MongoError:未授权db执行命令?当连接到socket.io时,mongodb,socket.io,Mongodb,Socket.io,我无法从socket.io连接到我的mongodb。 当我运行我的server.js时,它说它与mongodb连接,并且它连接到一个套接字,但随后它显示了错误 MongoError: not authorized on db to execute command find. 我已经作为管理员用户登录到mongo管理员数据库,然后进入“聊天”数据库,在数据库中创建了一个新用户,角色为“readWrite”,如下所示 use chat 然后: db.createUser({user: "test

我无法从socket.io连接到我的mongodb。 当我运行我的server.js时,它说它与mongodb连接,并且它连接到一个套接字,但随后它显示了错误

MongoError: not authorized on db to execute command find.
我已经作为管理员用户登录到mongo管理员数据库,然后进入“聊天”数据库,在数据库中创建了一个新用户,角色为“readWrite”,如下所示

use chat
然后:

db.createUser({user: "testuser", pwd: "testuser", roles: [{role: "readWrite", db: "chat" }]})
Successfully added user: {
    "user" : "testuser",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "chat"
        }
    ]
}
用户将被创建。 当我用
db.auth(“testuser”,“testuser”)
测试它时,我得到一个1。 然后我退出并转到我的bin文件夹,在那里我写:
mongo.exe-u testuser-p testuser chat

然后连接到
mongodb://127.0.0.1:127017/chat

然后我打开一个新的提示符,转到我的文件夹,在那里我有一个与db连接的server.js并运行它,然后它首先说服务器正在运行,并且它与mongodb连接

当我转到我的聊天页面并加载它时,它会说:MongoError未经授权

我像这样连接我的server.js文件

var port = process.env.PORT || 3000;
server.listen(port);
console.log('Server running *:'+port);

var io = require('socket.io').listen(server);
var mongoose = require('mongoose');

//mongoose.connect('mongodb://127.0.0.1:27017/chat', function(err){
mongoose.connect('mongodb://localhost/chat', function(err){
我不知道我遗漏了什么,我已经跟踪了mongodb上的文档并查看了整个网络,但不确定哪里出了问题

任何意见都非常感谢

当我加载聊天页面并查看控制台时,我发现这个错误

https://manmade.se:3000/socket.io/?EIO=3&transport=polling&t=Lceu0Ot&sid=wbFhDl7yylt4_4a1AAAA net::ERR_CONNECTION_RESET

index_webb.html:1 WebSocket connection to 'wss://manmade.se:3000/socket.io/?EIO=3&transport=websocket&sid=wbFhDl7yylt4_4a1AAAA' failed: WebSocket is closed before the connection is established.

该错误似乎表明,通过您的程序,您没有在正确的数据库上进行身份验证

从外壳连接时,在您的特定情况下,这将导致错误:

mongo -u test -p test
您必须指定聊天数据库:

mongo chat -u test -p test

我不认为这是一个套接字错误,因为您正在连接,错误消息似乎表明您只是没有在正确的数据库(在本例中是聊天数据库)上进行身份验证。

您确定您连接到了正确的端口吗?是的,我以前使用过它,但后来我重新安装了mongodb,现在无法使用它。好的,谢谢所以当我登录时,我必须首先以管理员身份登录到管理员数据库?我一整天都在做这个,现在我开始很困惑,不知道我测试了什么,也不知道。我应该和什么用户联系?有读写权限吗?好的,我以管理员和:use chat的身份登录,在那里我在“chat”数据库中创建了一个新用户,名为“readWrite”。它是按应有的方式创建的。当我使用db.auth(“testuser”,“testuser”)进行测试时,我得到1。然后我试着站在bin文件夹:mongo-u testuser-p testuser chat;然后我说了一个错误;正在丢失哈哈…您可以连接任何具有读写权限的用户。尽管您的用户“测试”在聊天数据库中具有读写权限,但实际用户是在管理员数据库中创建的还是在聊天数据库中创建的?我刚刚创建了一个新用户,并以管理员身份登录,然后使用use chat访问聊天数据库,并在那里创建了一个新用户。我已经用我刚才做的最新问题更新了我的问题。