1. 程式人生 > >mongodb 許可權管理 for 3.0+

mongodb 許可權管理 for 3.0+

2、 MongoDB使用者角色配置

2.1、基本知識介紹

MongoDB基本的角色 
1.資料庫使用者角色:read、readWrite; 
2.資料庫管理角色:dbAdmin、dbOwner、userAdmin; 
3.叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 
4.備份恢復角色:backup、restore; 
5.所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 
6.超級使用者角色:root 
//這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase) 
其中MongoDB預設是沒有開啟使用者認證的,也就是說遊客也擁有超級管理員的許可權。userAdminAnyDatabase:有分配角色和使用者的許可權,但沒有查寫的許可權

2.2、操作步驟

2.2.1、連線到MongoDB伺服器

./mongo

2.2.2、建立root/admin使用者

use admin
db.createUser({user:"root",pwd:"password",roles:["root"]})

db.createUser(  
  {  
    user: "admin",  
    pwd: "password",  
    roles: [{role: "userAdminAnyDatabase", db: "admin"}]  
  }  
)

2.2.3、修改mongod.conf檔案

在配置檔案中增加如下配置

security:
  authorization: enabled //啟用授權

如果是2.x,此處auth=true

2.2.4、重啟MongoDB伺服器

service mongod restart

2.2.5、建立資料庫讀寫許可權使用者

use admin
db.auth("admin"," password");
use ballmatch
db.createUser({
    user: "football",
    pwd: "password",
    roles: [{role: "readWrite",db: "ballmatch"}]
})

2.2.6、Java程式連線MongoDB伺服器

//方式一
        MongoCredential credential = MongoCredential.createCredential("username", "dbName", "password".toCharArray());
        ServerAddress serverAddress = new ServerAddress("192.168.10.242", 27017);
        MongoClient mongoClient = new MongoClient(serverAddress, Arrays.asList(credential));
        DB db = mongoClient.getDB("dbName");
        return db;

        //方式二
        String sURI = String.format("mongodb://%s:%[email protected]%s:%d/%s", "username", "password", "192.168.10.242", 27017, "dbName"); 
        MongoClientURI uri = new MongoClientURI(sURI); 
        MongoClient mongoClient = new MongoClient(uri); 
        DB db = mongoClient.getDB("dbName");

3、命令參考

3.1、修改使用者密碼

db.updateUser( "admin",{pwd:"password"});

3.2、密碼認證

db.auth("admin","password");

3.3、MongoDB連線資訊查詢

db.serverStatus().connections;

MongoDB例項接受的最多連線數,如果高於作業系統接受的最大執行緒數,設定無效。net.maxIncomingConnections預設(65536)

3.4、關閉MongoDB服務

use admin;
db.shutdownServer();

3.5、刪除使用者

刪除使用者(需要root許可權,會將所有資料庫中的football使用者刪除)

db.system.users.remove({user:"football"});

刪除使用者(許可權要求沒有那麼高,只刪除本資料中的football使用者)

db.dropUser("football");