mongodb 許可權管理 for 3.0+
阿新 • • 發佈:2018-12-31
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");