每周一坑-mongo建库查看为空

mongo建库查看为空

  今天是国际睡眠日,所以文章不长,好珍惜你、我、他的时间

  每周一坑的专题最近很少写了,今天遇到真的是坑!是关于一个mongo建了新库后为空的诡异现象。。。

  对mongo稍微有点了解的人(说的是我,对mongo的认识仅限于一些基本操作),都知道mongo创建新库和授权用户的流程,我大概贴下模板:

use mondb_0321;
db.createUser({
    user:"用户名",
    pwd:"用户名密码",
    customData: { description:"ljy的测试mongo库" },
        roles:[
       {
             role:"readWrite",
             db:"mondb_0321"
         },
       { role:"dbOwner", db:"mondb_0321" }
    ]
})

  mongo跟mysql相比,比较神奇的一点是:use db;  这个不仅是切换到db库,还含有一个不存在即创建该库的含义;而对于mysql来说仅仅表示切换,如果创建则要显式声明:create database db来创建,然后切换到新库之后,再创建用户和授权。mongo正常执行成功后,理应会返回“Successfully added user” 的提示。

  当时我为了确认是否创建成功,就运行:"show db;"   来查看,奇怪的是,看不到这个新创建的 mondb_0321 的空库。

  先交代下,我用的是:mongo 3.4.7 的版本,为啥我强调空库,因为建一个有数据的库,我没测过,所以不乱下判断。但上面的指令确实是建一个空库,这没错吧?

  当时我有怀疑过命令不对,跟某强确认说流程没错,于是反复建库删库、建用户、删用户,切换到admin库,查询所有关于该新建的用户的授权,类似这样

use admin;
db.auth("admin", "admin的密码");
db.system.users.find({user:'用户名'})

  确实能查到 ”_id“ 为 “mondb_0321.用户名","db" 为“mondb_0321” 的记录,而且,用mongo客户端连接工具(MongoDBCompass、Studio 3T)输入账号、密码、连接mongo的IP和端口、及所在的库(mondb_0321)也没报连接错误

  最后查到网上也有人遇到这种情况,参考:https://www.nhooo.com/note/qa0sq2.html

  说如果建一个空库,需要插入一条数据才能看到新建的库,还真的是!

  运行:

use mondb_0321;
db.check.insertOne({"ClientName":"John"})

## 之后就能看到 mondb_0321的库 show dbs;

最后给个彩蛋,mongo删库删用户的流程(高手请绕路~)

use mondb_0321
db.dropUser('用户名')
db.dropDatabase()
posted @ 2022-03-21 21:59  windysai  阅读(450)  评论(0编辑  收藏  举报