在剛安裝完畢的時候MongoDB都默認有一個admin數據庫,而admin.system.users中將會保存比在其它數據庫中設置的用戶權限更大的用戶信息。
當admin.system.users中一個用戶都沒有時,即使mongod啟動時添加了--auth參數,如果沒有在admin數據庫中添加用戶,此時不進行任何認證還是可以做任何操作,直到在admin.system.users中添加了一個用戶。
windows下打開DOS進入bin目錄執行mongo打開shell:
D:\mongodb2.4.3\bin>mongo
使用admin庫:
> use admin
> db.addUser("root","123456")
{
"user" : "root",
"readOnly" : false,
"pwd" : "34e5772aa66b703a319641d42a47d696"
}
驗證用戶:
> db.auth("root","123456")
1 //驗證成功,返回1
> show dbs //查看全部數據庫
admin 0.0625GB
local 0.03125GB
mydb 0.125GB
test (empty)
local 0.03125GB
mydb 0.125GB
test (empty)
> use mydb //使用mydb數據庫
switched to db mydb
> db.addUser("101.key","123456") //默認可讀寫,只讀為db.addUser("101.key","123456",true)
> db.system.users.find() //查看所有用戶
> db.system.users.remove({user:"10.key"})//給當前數據庫刪除用戶
>show collections //查看所有集合
>db.serverStatus() //可以獲取到mongodb的服務器統計信息,其中包括 :全局鎖,索引,用戶操作行為等等這些統計信息
> exit //退出
D:\mongodb2.4.3\bin>mongostat -uroot -p123456 --port 27017 //觀看實時數據變化
D:\mongodb2.4.3\bin>mongo admin -uroot -p123456 //指定admin數據庫,帳號登錄
-------------------------------------------------------------------------------------------------
遠程用戶連接
語法結構:mongo –uusername –ppwd ServerIP:port/dbname
其中port默認為27017
>mongo -uroot -p123456 192.168.2.150/admin
---------------------------------------------------------------------------
java 客戶端鏈接主要代碼:
private static Mongo mg = null;
private static Map dbMap = new HashMap();
private DB db = null;
private static Map dbMap = new HashMap();
private DB db = null;
public DAOMongo(){
if (mg == null){
try {
mg = new Mongo("localhost", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
if (dbMap.containsKey("mydb")){
db = (DB)dbMap.get("mydb");
}else{
db = mg.getDB("mydb");
boolean authResult = db.authenticate("101.key", "123456".toCharArray());
logger.info("authResult="+authResult);
if (authResult){
dbMap.put("mydb", db);
}
}
//admin 庫 root 123456
}
if (mg == null){
try {
mg = new Mongo("localhost", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
if (dbMap.containsKey("mydb")){
db = (DB)dbMap.get("mydb");
}else{
db = mg.getDB("mydb");
boolean authResult = db.authenticate("101.key", "123456".toCharArray());
logger.info("authResult="+authResult);
if (authResult){
dbMap.put("mydb", db);
}
}
//admin 庫 root 123456
}
