1. 程式人生 > >mongodb用戶權限操作常用命令

mongodb用戶權限操作常用命令

mongodb

由於公司還有幾臺mongodb的數據庫,需要開放某部分權限給外部人員使用,所以這裏記錄一下,僅供需要的朋友使用。


1. MongoDB常用命令

[root@snails ~]# ps -ef|grep mongod
[root@snails ~]# mongo --host=127.0.0.1 --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test

> show dbs  #顯示數據庫列表 
> show collections  #顯示當前數據庫中的集合(類似關系數據庫中的表)
> show users  #顯示用戶
> use <db name>  #切換當前數據庫,如果數據庫不存在則創建數據庫。 
> db.help()  #顯示數據庫操作命令,裏面有很多的命令 
> db.foo.help()  #顯示集合操作命令,同樣有很多的命令,foo指的是當前數據庫下,一個叫foo的集合,並非真正意義上的命令 
> db.foo.find()  #對於當前數據庫中的foo集合進行數據查找(由於沒有條件,會列出所有數據) 
> db.foo.find( { a : 1 } )  #對於當前數據庫中的foo集合進行查找,條件是數據中有一個屬性叫a,且a的值為1

> db.dropDatabase()  #刪除當前使用數據庫
> db.cloneDatabase("127.0.0.1")   #將指定機器上的數據庫的數據克隆到當前數據庫
> db.copyDatabase("mydb", "temp", "127.0.0.1")  #將本機的mydb的數據復制到temp數據庫中
> db.repairDatabase()  #修復當前數據庫> db.getName()  #查看當前使用的數據庫,也可以直接用db
> db.stats()  #顯示當前db狀態
> db.version()  #當前db版本> db.getMongo()  #查看當前db的鏈接機器地址
> db.serverStatus()  #查看數據庫服務器的狀態

2. MongoDB數據庫角色

內建的角色 
數據庫用戶角色:read、readWrite; 
數據庫管理角色:dbAdmin、dbOwner、userAdmin; 
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 
備份恢復角色:backup、restore; 
所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 
超級用戶角色:root // 這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase) 
內部角色:__system 
角色說明: 
Read:允許用戶讀取指定數據庫 
readWrite:允許用戶讀寫指定數據庫 
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile 
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶 
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。 
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限 
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限 
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限 
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。 
root:只在admin數據庫中可用。超級賬號,超級權限

3. 授權步驟

>mongo --host 127.0.0.1 --port 27018
>use dbname;
>db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }
這個例子創建了一個名為 root 的用戶管理員。創建完了這個用戶之後,我們應該馬上以該用戶的身份登錄:
> db.auth("root","root123")
1
db.auth() 方法返回 1 表示登錄成功。接下來我們為指定的數據庫創建訪問所需的賬號。

註意:使用密碼策略需要先在配置文件中增加 auth=true。並且mongo在從模式下面是不允許操作密碼策略的,主要應該是屬於只讀模式,只負責同步master上面的數據

mongodb用戶權限操作常用命令