随笔 - 0, 文章 - 264, 评论 - 170, 引用 - 0
数据加载中……

MongoDB基本使用(注:转载于http://hi.baidu.com/yangdaming1983/item/27f25de9f6588cc5bbf37d91)

MongoDB基本使用

一、启动:

./mongod --dbpath=/data/mongodb --port=27017 --logpath=/data/mongodb/logs &

mongod --dbpath=/data/mongodb --port 27017 --logpath /data/mongodb/logs --auth --bind_ip 127.0.0.1 &

连接已有的db:mongo 192.168.0.166:27017

 

查询所有数据库

show dbs 使用test数据库use test 显示test所有表(collections)show collections 查询服务器状态db.serverStatus() #只允许某ip访问
$ mongod --bind_ip 127.0.0.1

#指定服务端口
$ mongod --port 27017

#指定数据存放路径
mongod.exe –port 11111 –dbpath E:\data\mongodb

绑定 IP 地址,只有本地才可以访问:

mongod --bind_ip 127.0.0.1在设置其它的端口:mongod --bind_ip 127.0.0.1 --port28888添加用户认证:

添加用户认证必须在启动 mongod 服务时添加 --auth 参数:

mongod --bind_ip 127.0.0.1 --port28888--auth

注意所有用户的认证信息都保存在每一个数据库的 system.users 集合中。例如:在数据库 projectx 中(就是 use projectx 后)projectx.system.users 会保存所有用户的信息(这里的用户是数据库用户)。

在最初始的时候 mongodb 都默认有一个 admin 数据库(刚开始是空的),而 admin.system.users 中将会保存比在其它数据库中设置的用户权限跟大的用户信息。

注 意:当 admin.system.users 中没有添加任一一个用户(即为空)时,即使 mongod 启动时添加了 --auth 参数,即使,在除 admin 数据库中添加了用户,此时不进行任何认证依然可以使用任何操作,知道你在 admin.system.users 中添加了一个用户。
如下分别创建两个用户:

在 projectx 中创建用户名为 user1 密码为 1resu 的用户,如下:

$ ./mongo> use projectx> db.addUser("user1","1resu");

在 admin 中创建用户名为 root 密码为 toor 的用户,如下:

$ ./mongo > use admin > db.addUser("root", "toor"); > db.auth("root", "toor"); 1

^^^^ 如果认证成功会显示 1
^^^^ 用以下命令可以查看所有当前选择的数据库的用户信息

> db.system.users.find(); {"_id" : ObjectId("4d761dfc23e14f10be8563c5"), "user" : "root", "readOnly" : false, "pwd" : "6a921fa21bbcd22989efecbcb2340d17"}$ ./mongo > use projectx switched to db dbtest > db.aaaa.insert({aa:"xx"}); unauthorized

^^^^ 一旦在 admin 数据库中添加了用户,
^^^^ 那么对数据库的操作必须进行认证,否则提示 unauthorized

> db.auth("user1","1resu");
1
> db.aaaa.insert({aa:"xx"});
> db.aaaa.find();
{"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}

^^^^ 进行用户认证后就可以插入数据了

> use projecty
switched to db projecty
> db.zzz.insert({aa:"xx"});
unauthorized

^^^^ 由于用户 user1 只作用于 projectx
^^^^ 并没有对 projecty 的操作权限
^^^^ 而我们却可以用 admin 库中的用户认证后进行创建,如下

> use admin
> db.auth("root","toor");
1
> use projecty
switched to db projecty
> db.zzz.insert({aa:"xx"});
> db.zzz.find();
{"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}

^^^^ 用 admin 库中的用户认证后就可以创建另一个数据库了
^^^^ 所以说明 admin 数据库中的权限很大,如果没有指定 readonly 的话
^^^^ 它可以进行任何操作,很危险

> use projectx
> db.addUser("user2","2resu", true);
{"user" : "user2", "readOnly" : true, "pwd" : "471e31e021a3656044ef3487ea90e0cf"}

^^^^ 当一 user2 用户认证时,user2 只能对 projectx 进行只读操作。

删除用户
> use dbname (admin or 51cv ,etc)
> db.system.users.remove({user:"haha"})

或db.removeUser('name')
> db.system.users.find()

用户登录数据库测试
mongod dbname -u uname -p password
如:mongo mailaccess -u mailaccess -p 

1)     进入数据库admin

1use admin

2)     增加或修改用户密码

1db.addUser('name','pwd')

3)     查看用户列表

1db.system.users.find()

4)     用户认证

1db.auth('name','pwd')

5)     删除用户

1db.removeUser('name')

6)     查看所有用户

1show users

7)     查看所有数据库

1show dbs

8)     查看所有的collection

1show collections

9)     查看各collection的状态


db.printCollectionStats()

10)   查看主从复制状态


db.printReplicationInfo()

11)   修复数据库


db.repairDatabase()

12)   设置记录profiling,0=off 1=slow 2=all

 
db.setProfilingLevel(1)

13)   查看profiling


show profile

14)   拷贝数据库


db.copyDatabase('mail_addr','mail_addr_tmp')

15)   删除collection


db.mail_addr.drop()

16)   删除当前的数据库


db.dropDatabase()

posted on 2012-08-21 21:41 小一败涂地 阅读(2076) 评论(1)  编辑  收藏 所属分类: mongdb、redis、memcache、消息队列等

评论

# re: MongoDB基本使用(注:转载于http://hi.baidu.com/yangdaming1983/item/27f25de9f6588cc5bbf37d91)  回复  更多评论   

初学mongodb,没看到这个使用测试的具体方法,请问是用什么方式进行插入的
2012-08-29 18:16 | 隐居士

只有注册用户登录后才能发表评论。


网站导航: