MongoDB簡單使用

來源:互聯網
上載者:User

標籤:ase   tom   完成   opera   app   state   插入資料   har   spec   

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 admindb.createUser({user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]})#test下建立使用者use testdb.createUser({user: "test",pwd: "test",roles: [ { role: "root", db: "test" } ]})#查看使用者show users;#刪除使用者> db.dropUser(‘root‘);true> show users;

 

 驗證使用者存在性

#注:使用者建立完成後需在設定檔開啟auth驗證並重啟後生效。

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

 

方法1

  資料庫內驗證

> use adminswitched 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

  資料庫外驗證

[[email protected] ~]$ mongo -uroot -proot admin MongoDB shell version: 3.2.8connecting to: admin

 

  定義指定資料庫許可權驗證 ,唯讀使用者

 

[[email protected] ~]$ 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 appdb.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/adminuse appdb.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({})

MongoDB簡單使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.