zoukankan      html  css  js  c++  java
  • MongoDB简单使用

    MongoDB数据库默认是没有用户名及密码的,即无权限访问限制。为了方便数据库的管理和安全,需创建数据库用户。

    用户创建语法格式

    {
    user: "<name>",
    pwd: "<cleartext password>",
    customData: { <any information> },
    roles: [{ role: "<role>",db: "<database>" } | "<role>",]
    }
    • user字段:用户的名字;必填
    • pwd字段:用户的密码;必填
    • cusomData字段:为任意内容,例如可以为用户全名介绍;
    • roles字段:指定用户的角色,可以用一个空数组给新用户设定空角色;必填
    • roles 字段,可以指定内置角色和用户定义的角色。必填
     #常用角色说明见官方文档

    https://docs.mongodb.com/manual/reference/built-in-roles/

     权限角色

    
    
    飘红为常用角色

    read
    :允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限

     创建超级管理员

    管理所有数据库,必须要进入到admin下创建(use admin),删除时也要到相应的库下操作

    mongo
    #admin下创建用户
    use admin
    db.createUser(
    {user: "root",
    pwd: "root",
    roles: [ { role: "root", db: "admin" } ]}
    )
    #test下创建用户
    use test
    db.createUser(
    {
    user: "test",
    pwd: "test",
    roles: [ { role: "root", db: "test" } ]
    }
    )
    #查看用户
    show users;
    #删除用户
    > db.dropUser('root');
    true
    > show users;

     验证用户存在性

    #:用户创建完成后需在配置文件打开auth验证并重启后生效。

    vim /application/mongodb/conf/mongodb1.conf
    security:
      authorization: enabled

    方法1

      数据库内验证

    > use admin
    switched to db admin
    > db.auth("root","root");
    1
    #查看系统用户表中数据,查看超管权限只能在admin数据库下进行
    #
    所有用户信息都存储在admin数据库下的system.user中

    > db.system.users.find().pretty()
    {
        "_id" : "admin.root",
        "user" : "root",
        "db" : "admin",
        "credentials" : {
            "SCRAM-SHA-1" : {
                "iterationCount" : 10000,
                "salt" : "9ed3ClyZPbThtzzDpqbg9w==",
                "storedKey" : "QdoewI/2uhUmwjJUbHoPSA+Cleo=",
                "serverKey" : "pC8yOq1gUaH7a+zIEycElPJINy0="
            }
        },
        "roles" : [
            {
                "role" : "root",
                "db" : "admin"
            }
        ]
    }

    方法2

      数据库外验证

    [mongod@lnmp ~]$ mongo -uroot -proot admin 
    MongoDB shell version: 3.2.8
    connecting to: admin

      定义指定数据库权限验证 ,只读用户

    [mongod@lnmp ~]$ mongo -utest -ptest test
    > db.createCollection('b'); #创建表
    { "ok" : 1 }
    > show tables; #显示表
    b
    > db.b.insert({"2":"b"}) #插入数据
    WriteResult({ "nInserted" : 1 })
    > db.b.find().pretty();#格式化打印数据
    { "_id" : ObjectId("5a4dd8d22a31eab1f0bbdc67"), "2" : "b" }
    > db.b.remove({})#删除数据
    WriteResult({ "nRemoved" : 1 })
    > db.b.find().pretty();

     创建对多个数据库的读写权限

    use app
    db.createUser(
      {
        user: "app",
        pwd: "app",
        roles: [ { role: "readWrite", db: "app" },
                      { role: "read", db: "test" }
               ]
      }
    )
    #app用户登录测试

     删除用户

    删除登录数据库的用户,需要先use 数据库,再删除它
    删除app用户:先登录到admin数据库
    # mongo -uroot –proot 10.0.0.131/admin
    use app
    db.dropUser("app")

     SQL语言与CRUD语言对照

    MongoDB CRUD 操作 http://www.mongoing.com/docs/crud.html

    schema

    SQL Schema Statements

    MongoDB Schema Statements

    CREATE TABLE users (

    id MEDIUMINT NOT NULL

    AUTO_INCREMENT,

    user_id Varchar(30),

    age Number,

    status char(1),

    PRIMARY KEY (id)

    )

    Implicitly created on first insert() operation. The primary

    key _idis automatically added if _id field is not specified.

    db.users.insert( {

    user_id: "abc123",

    age: 55,

    status: "A"

    } )

    However, you can also explicitly create a collection:

    db.createCollection("users")

    ALTER TABLE users

    ADD join_date DATETIME

    在Collection 级没有数据结构概念。然而在 document级,可以通过$set在

    update操作添加列到文档中。

    db.users.update(

    { },

    { $set: { join_date: new Date() } },

    { multi: true }

    )

    ALTER TABLE users

    DROP COLUMN join_date

    在Collection 级没有数据结构概念。然而在 document级,可以通过$unset

    在update操作从文档中删除列。

    db.users.update(

    { },

    { $unset: { join_date: "" } },

    { multi: true }

    )

    CREATE INDEX idx_user_id_asc

    ON users(user_id)

    db.users.createIndex( { user_id: 1 } )

    CREATE INDEX

    idx_user_id_asc_age_desc

    ON users(user_id, age DESC)

    db.users.createIndex( { user_id: 1, age: -1 } )

    DROP TABLE users

    db.users.drop()

     插入语句

    SQL INSERT Statements

    MongoDB insert() Statements

    INSERT INTO

    users(user_id,

    age,

    status)

    VALUES ("bcd001",

    45,

    "A")

    db.users.insert(

    { user_id: "bcd001", age:

    45, status: "A" }

    )


    查询类

    SQL SELECT Statements

    MongoDB find() Statements

    SELECT *

    FROM users

    db.users.find()

    SELECT id,

    user_id,

    status

    FROM users

    db.users.find(

    { },

    { user_id: 1, status: 1, _id: 0 }

    )

    SELECT user_id, status

    FROM users

    db.users.find(

    { },

    { user_id: 1, status: 1 }

    )

    SELECT *

    FROM users

    WHERE status = "A"

    db.users.find(

    { status: "A" }

    )

    SELECT user_id, status

    FROM users

    WHERE status = "A"

    db.users.find(

    { status: "A" },

    { user_id: 1, status: 1, _id: 0 }

    )

    数据更新操作  

    SQL Update Statements

    MongoDB update() Statements

    UPDATE users

    SET status = "C"

    WHERE age > 25

    db.users.update(

    { age: { $gt: 25 } },

    { $set: { status: "C" } },

    { multi: true }

    )

    UPDATE users

    SET age = age + 3

    WHERE status = "A"

    db.users.update(

    { status: "A" } ,

    { $inc: { age: 3 } },

    { multi: true }

    )

    数据删除操作

    SQL Delete Statements

    MongoDB remove() Statements

    DELETE FROM users

    WHERE status = "D"

    db.users.remove( { status: "D" } )

    DELETE FROM users

    db.users.remove({})

  • 相关阅读:
    SQL 中不同类型的表连接
    分享一些不错的sql语句
    SQL Server 日期和时间函数
    Delete,Update与LEFT Join
    Excel 相对引用与绝对引用
    SQL Update 巧用
    Delphi 多步操作产生错误,请检查每一步的状态值
    003-mysql查询表的数据大小、索引大小
    002-导出表结构、数据字典、说明文档
    008-运维管理链码
  • 原文地址:https://www.cnblogs.com/anyux/p/8194158.html
Copyright © 2011-2022 走看看