• 每周一坑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()
  • 相关阅读:
    高校招生说明网页被挂马 考生浏览需谨慎 狼人:
    匹配情况hdu4451Dressing
    方法springBean Lifecycle in Spring
    android颜色关于Android TabHost切换Tab字体的颜色背景颜色改变
    推荐美国简单的选项卡功能实现
    按钮function关闭子页面刷新父页面中部分控件数据
    编码文件AndroidStudio初体验:解决Execution failed for task ':TestAndroid:compileDebug'.
    图片类关于实现图片剪切功能的相关类的学习心得
    nullnull10879 Code Refactoring
    java独立HDU 2845 Beans
  • 原文地址:https://www.cnblogs.com/windysai/p/16036898.html
Copyright © 2020-2023  润新知