一、启动:
./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 &
q接已有的dbQmongo 192.168.0.166:27017
查询所有数据库
show dbs 使用test数据库use test 昄test所有表QcollectionsQshow collections 查询服务器状态db.serverStatus() #只允许某ip讉K$ mongod --bind_ip 127.0.0.1
#指定服务端口
$ mongod --port 27017
#指定数据存放路径
mongod.exe –port 11111 –dbpath E:\data\mongodb
l定 IP 地址Q只有本地才可以讉KQ?/p>mongod --bind_ip 127.0.0.1在设|其它的端口Qmongod --bind_ip 127.0.0.1 --port28888d用户认证Q?p>d用户认证必须在启?mongod 服务时添?--auth 参数Q?/p>mongod --bind_ip 127.0.0.1 --port28888--auth
注意所有用L认证信息都保存在每一个数据库?system.users 集合中。例如:在数据库 projectx 中(是 use projectx 后)projectx.system.users 会保存所有用L信息Q这里的用户是数据库用户Q?/p>
在最初始的时?mongodb 都默认有一?admin 数据库(刚开始是I的Q,?admin.system.users 中将会保存比在其它数据库中设|的用户权限跟大的用户信息?/p>
?意:?admin.system.users 中没有添加Q一一个用P即ؓI)Ӟ即 mongod 启动时添加了 --auth 参数Q即使,在除 admin 数据库中d了用P此时不进行Q何认证依然可以用Q何操作,知道你在 admin.system.users 中添加了一个用戗?br />如下分别创徏两个用户Q?/p>
?projectx 中创建用户名?user1 密码?1resu 的用P如下Q?/p>$ ./mongo> use projectx> db.addUser("user1","1resu");
?admin 中创建用户名?root 密码?toor 的用P如下Q?/p>$ ./mongo > use admin > db.addUser("root", "toor"); > db.auth("root", "toor"); 1
^^^^ 如果认证成功会显C?1
^^^^ 用以下命令可以查看所有当前选择的数据库的用户信?/p>> 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 数据库中d了用P
^^^^ 那么Ҏ据库的操作必进行认证,否则提示 unauthorized
1
> db.aaaa.insert({aa:"xx"});
> db.aaaa.find();
{"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}
^^^^ q行用户认证后就可以插入数据?/p>> use projecty
switched to db projecty
> db.zzz.insert({aa:"xx"});
unauthorized
^^^^ ׃用户 user1 只作用于 projectx
^^^^ q没有对 projecty 的操作权?br />^^^^ 而我们却可以?admin 库中的用戯证后q行创徏Q如?/p>> 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 库中的用戯证后可以创建另一个数据库?br />^^^^ 所以说?admin 数据库中的权限很大,如果没有指定 readonly 的话
^^^^ 它可以进行Q何操作,很危?/p>> use projectx
> db.addUser("user2","2resu", true);
{"user" : "user2", "readOnly" : true, "pwd" : "471e31e021a3656044ef3487ea90e0cf"}
^^^^ 当一 user2 用户认证Ӟuser2 只能?projectx q行只读操作?
删除用户
> use dbname (admin or 51cv ,etc)
> db.system.users.remove({user:"haha"})
或db.removeUser('name')
> db.system.users.find()
如:mongo mailaccess -u mailaccess -p
1) q入数据库admin
1use admin2) 增加或修改用户密?/p>1db.addUser('name','pwd')
3) 查看用户列表
1db.system.users.find()4) 用户认证
1db.auth('name','pwd')5) 删除用户
1db.removeUser('name')6) 查看所有用?/p>1show users
7) 查看所有数据库
1show dbs8) 查看所有的collection
1show collections9) 查看各collection的状?/p>
db.printCollectionStats()
10) 查看M复制状?/p>
db.printReplicationInfo()
11) 修复数据?/p>
db.repairDatabase()
12) 讄记录profilingQ?=off 1=slow 2=all
db.setProfilingLevel(1)
13) 查看profiling
show profile
14) 拯数据?/p>
db.copyDatabase('mail_addr','mail_addr_tmp')
15) 删除collection
db.mail_addr.drop()
16) 删除当前的数据库
db.dropDatabase()