mongo : 未授权 admin 在 admin 上执行命令

问题描述

我是 Mongod 的新手,必须起一个集群。 db 以 --replSet=Data 启动,我事先使用 rs.Initiate 创建了集群。但这个问题是关于用户管理的。

这个副本集是用这个命令设置的:

rs.initiate({ _id : "Data",members: [
{ _id: 0,host: "srv1:27017" },{ _id: 1,host: "srv2:27017" },{ _id: 2,host: "srv3:27017",arbiterOnly: true }
})

服务器以 $ /usr/bin/mongod -f /etc/mongod.conf --replSet=rs0

启动

请注意,据我所知,我还没有配置其他节点/将这些节点添加到集群中,但我确实将 keyFile: /etc/mongod/keyfile 分发到了每个服务器。

rs.status 表示它没有运行。

> rs.Status();
{
"ok : 0"
"errmsg" : no replset config has been received","code" : 94,"codename" : "NotYetinitialized"
}

我遇到了一些笔尖问题。

我在使用以下命令调用 mgdb 之前创建了一个用户

# mongo admin -port 27017 
> db.createuser ( {  
user : 'mgdb',pwd: 'password',roles: [ { roles: root,db: admin } ]
})

返回正常。

接下来我尝试了,

$ mongo --authenticationDatabase admin --username "mgdb" --password "password" 

但出现错误

E QUERY  [js] Error authentication Failed.

接下来我尝试查看用户列表,

> show users;
not authorizeed on admin to execute on admin to execute command { UserInfo: 1.0},lsid: { id: UID"xxxxxxxx") }. $db: "admin" }  DB.prototy[e.getUsers@.....

所以,我有点失落。几年前我用过MysqL,但从那以后就没有用过。我的 dB 经验很少。

虽然我可以以管理员用户身份连接,但管理员用户似乎没有权限做基本的“显示用户”;

我可以在哪里查看 dB 以找出问题所在?

环境:RHEL 7.6 SELinux Enforcing,MOngdodB 4.2.9

解决方法

在 MongoDB 中,您可以为每个数据库创建用户。通常用户是在数据库 admin 中创建的(我不知道有什么理由在其他地方创建它们):

use admin
db.createUser(...

db.getSiblingDB("admin").createUser(...

当您连接到 Mongo 时,您需要指定身份验证数据库,即创建用户的数据库:

mongo --usermame=mgdb --password 'password' --authenticationDatabase admin

Authentication failure while trying to save to mongodb

要部署分片集群,请查看 Deploy a Sharded ClusterDeploy a Replica Set 教程。