mongoose 使用超级管理员操作数据库

在第一篇关于 mongodb 中我们创建了两个账户,admin 和 root,它们的权限:admin 是 userAdminAnyDatabase 仅用来管理所有数据库账户的,root 的权限就是 root 也就是最高权限。

那么一般情况下,比如我 mongodb 服务中已经存在很多个数据库(表)了,而这些数据表是没有自己独立的账户的,在使用 mongoose 的时候我要怎么操作呢?

如果我们已经有了 root 或者 admin 任意一个账户后,你会发现当我们使用 mongoose 连接无账户数据库时会收到权限的限制,比如 find 方法会查不出东西,并报错说没有权限。

那么下面的代码就是例子了,主要用的是 mongoose 的 useDb

// 所以说,建立用户的时候,第一个必须是root,要是只有admin权限,吼吼,完蛋。
// 先用我们root账户登陆admin数据库(表)
let connet = mongoose.createConnection("mongodb://root:123456@127.0.0.1/admin");
// 然后检测一下是否成功
connect.on("open", () => console.log("ok"));
connet.on("error", (err) => console.log("失败:", err));
// 然后切换gameinfo数据库
let Game = connet.useDb("gameinfo");
// 注册集合,这里我用空对象表示了Schema规则
let Users = Game.model("users", {});
// 然后查询所有文档
Users.find({}, (err, data) => {
  console.log(err, data);
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Last Updated:
Contributors: websong