首先是对MongoDB用户和权限的设置,如果不设置用户的话,直接使用mongo命令可以进入客户端shell界面进行操作了,但是如果没有设置用户的话,总感觉少了点什么,于是经过半天的查找和实践,差不多把用户和权限弄明白了。总结如下:
  如果按照以下这个指令安装的话:
  mongod --install --dbpath "C:Program Filesmongodbdatadb" --logpath "C:Program FilesmongodbdatalogMongoDB.log"
  如下:
  c:Program Filesmongodbin>mongod --install --dbpath "C:Program Filesmongodbdatadb" --logpath "C:Program FilesmongodbdatalogMongoDB.log"
  Fri Apr 05 13:47:43.164
  Fri Apr 05 13:47:43.168 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
  Fri Apr 05 13:47:43.169
  Fri Apr 05 13:47:43.169 Trying to install Windows service 'MongoDB'
  Fri Apr 05 13:47:43.170 There is already a service named 'MongoDB', aborting
  c:Program Filesmongodbin>net start MongoDB
  Mongo DB 服服务务已已经经启启动动成成功功。。
  c:Program Filesmongodbin>mongo
  MongoDB shell version: 2.4.1
  connecting to: test
  Server has startup warnings:
  Fri Apr 05 13:48:02.516 [initandlisten]
  Fri Apr 05 13:48:02.516 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
  Fri Apr 05 13:48:02.516 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
  Fri Apr 05 13:48:02.516 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.
  Fri Apr 05 13:48:02.516 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
  Fri Apr 05 13:48:02.516 [initandlisten]
  > show dbs
  admin   (empty)
  local   0.03125GB
  >
  可以看到有两个默认的数据库admin和local
  实例1:创建一个用户名为root,密码为admin的用户,如下:
  > use admin
  switched to db admin
  > db.addUser("root","admin")
  {
  "user" : "root",
  "readOnly" : false,
  "pwd" : "bde0d84f6749c235a6b4e36d945eb666",
  "_id" : ObjectId("515e662430d89f61f6991c91")
  }
  > show collections
  Fri Apr 05 13:50:36.685 JavaScript execution failed: error: {
  "$err" : "not authorized for query on admin.system.namespaces",
  "code" : 16550
  } at src/mongo/shell/query.js:L128
  >
  说明:使用以上指令show collections的时候,发现报错了。是因为没有权限。做如下操作:
  > db.auth("root","admin");
  1
  说明:返回1表示验证成功了,返回0表示验证失败。
  此时,输入以下指令:show collections则可以看到admin下的集合了。
  > show collections
  system.indexes
  system.users
  > db.system.users.find()
  { "_id" : ObjectId("515e662430d89f61f6991c91"), "user" : "root", "readOnly" : false, "pwd" : "bde0d84f6749c235a6b4e36d945eb666" }
  >
  实例2:在用户名为root,密码为admin的用户下创建一个student数据库,并在student数据库中创建一个stu的集合并插入一个文档,如下:
  > use student
  switched to db student
  > db.stu.insert({"name":"maoyuanjun","age":25,"sex":"male"})
  > db.stu.find()
  { "_id" : ObjectId("515e676630d89f61f6991c92"), "name" : "maoyuanjun", "age" : 25, "sex" : "male" }
  退出服务器,重新登陆如下:
  c:Program Filesmongodbin>mongo
  MongoDB shell version: 2.4.1
  connecting to: test
  > show dbs
  Fri Apr 05 13:58:05.420 JavaScript execution failed: listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" }
  at src/mongo/shell/mongo.js:L46
  出错原因:是没有权限。则先判断是否有权限,如下:
  > use admin
  switched to db admin
  > db.auth("root","admin")
  1
  > show dbs
  admin   0.0625GB
  local   0.03125GB
  student 0.0625GB
  >
  这时,我们可以看到用户root,密码admin的用户下多了一个student数据库。