gpt4 book ai didi

mongodb - 显示 dbs 给出 "Not Authorized to execute command"错误

转载 作者:IT老高 更新时间:2023-10-28 13:06:08 24 4
gpt4 key购买 nike

我花了一些时间试图找出问题所在,但由于我找不到,我决定在这里问。

我在 Windows 8 上运行 MongoDB(Windows 64-bit 2008 R2+) 版本 3.2.3,路径是:

C:\MongoDB\bin 用于安装

C:\data\db 用于数据文件夹

我安装了以下 this videothis tutorial来自官方文档。

第一个问题可能是客户端(mongo.exe)和服务器(mongod.exe)之间的连接,因为我真的不知道这是否是一个问题。

我通过命令行启动了 mongod.exe(具有管理员权限),一切正常,我收到了消息:

waiting for connections on port 27017

但是当我通过命令行的新实例启动 mongo.exe 时,服务器 (mongod.exe) 不会打印一条消息说有一个新的连接(在我观看的教程中就是这种情况)

在另一边,mongo.exe 打印出来

connecting to : test

我不知道此时一切是否正确,但我仍然尝试了一些基本命令,例如:

show dbs 返回管理员未授权执行命令

基本上,我尝试的所有命令都有相同的错误消息,即使是我刚刚使用 use 'dbName'

创建的“新鲜”数据库

网上一些回答说我必须创建一个具有适当角色的用户,我试过this one .还是一样的错误信息not authorized to execute command

我的问题如下:

当我启动 mongo.exe 时 mongod.exe 不显示新连接是否正常?如果它是正确的,那么我该怎么做才能使基本命令正常工作?

附加信息:

我尝试卸载/重新安装几次,在 Windows 安装程序中使用“自定义模式”和“完整模式”,但总是导致同样的问题。

我还尝试按照官方文档创建 MongoDB 服务,但我不确定这是否是个好主意。 (我无法添加更多链接,但它在我分享的第二个链接的一个部分中。

编辑部分:

我决定在我多年未接触过的另一台运行 Windows 7 64 位的计算机上试一试。

我复制了这台电脑根目录下的MongoDB安装文件夹,创建了\data\db文件夹并启动了mongod.exe。

然后我启动了 mongo.exe,这一次,mongod.exe 打印了一条消息,说有一个新的打开连接,它在我的实际计算机上没有。我认为问题出在此处,因为我能够从官方文档开始基本教程并执行简单的命令,例如创建新数据库、插入、查找、显示数据库等。我在实际计算机上无法完成的所有操作.

所以我认为问题来自于 mongod.exe 和 mongo.exe 之间的连接

您知道如何解决这个问题,因为我已经尝试卸载了几次。

最佳答案

您应该已经使用访问控制启动了 mongod 实例,即 the --auth command line option ,如:

$ mongod --auth

让我们启动 mongo shell,并在 admin 数据库中创建一个管理员:

$ mongo
> use admin
> db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

现在如果您运行命令“db.stats()”或“显示用户”,您将收到错误“管理员未授权执行命令...”

> db.stats()
{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { dbstats: 1.0, scale: undefined }",
"code" : 13,
"codeName" : "Unauthorized"
}

原因是您仍未将角色“read”或“readWrite”授予用户 myUserAdmin。你可以这样做:

> db.auth("myUserAdmin", "abc123")
> db.grantRolesToUser("myUserAdmin", [ { role: "read", db: "admin" } ])

现在您可以验证它(命令“显示用户”现在可以使用):

> show users
{
"_id" : "admin.myUserAdmin",
"user" : "myUserAdmin",
"db" : "admin",
"roles" : [
{
"role" : "read",
"db" : "admin"
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}

现在如果你运行“db.stats()”,你也会没事的:

> db.stats()
{
"db" : "admin",
"collections" : 2,
"views" : 0,
"objects" : 3,
"avgObjSize" : 151,
"dataSize" : 453,
"storageSize" : 65536,
"numExtents" : 0,
"indexes" : 3,
"indexSize" : 81920,
"ok" : 1
}

这种用户和角色机制也可以应用于 MongoDB 中的任何其他数据库,除了 admin 数据库。

(MongoDB 版本 3.4.3)

关于mongodb - 显示 dbs 给出 "Not Authorized to execute command"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35881662/

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