MongoDB 权限管理 用户名和密码的操作

时间:2022-06-27 17:09:38
在刚安装完毕的时候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)
> 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;
 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
 }