开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库!
在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息!当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添加了一个用户。
需要注意的是:admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息,拥有超级权限,也就是说在admin中创建的用户可以对mongodb中的其他数据库数据进行操作。
1 mongodb系统中,数据库是由超级用户来创建的,一个数据库可以包含多个用户,一个用户只能在一个数据库下,不同数据库中的用户可以同名!
2 当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添加了一个用户。
3 特定数据库比如DB1下的用户User1,不能够访问其他数据库DB2,但是可以访问本数据库下其他用户创建的数据!
4 不同数据库中同名的用户不能够登录其他数据库!比如DB1,DB2都有user1,以user1登录DB1后,不能够登录到DB2进行数据库操作!
5 在admin数据库创建的用户具有超级权限,可以对mongodb系统内的任何数据库的数据对象进行操作!
【】用户管理
1 添加只读用户
db.addUser("skyman.man","manchungood",true)
2 修改只读用户为普通用户
db.addUser("skyman.man","manchungood",false);
db.addUser("admin","manchungood",false);
3 删除用户
db.removeUser("admin");
4 切换数据库
打开数据库,没有的话立即建一个
> use admin
5 增加或修改用户密码 ,必须在非--auth方式下启动mongodb,建立用户,建立完毕,关闭mongodb,以--auth方式启动mongodb,再以admin用户登录自己专属的db
> db.addUser('admin','admin')
6 查看用户列表
> db.system.users.find()
7 #用户认证,要让登陆的用户能具有某个db的权限,必须进入该db,执行auth命令才能生效。
> db.auth('admin','pwd')
8 删除用户对该db的访问权限
> db.removeUser('mongodb');
--查看当前db的所有用户
> show users
9 使用用户登录mongodb
[root@mongo ~]# /usr/local/mongodb37018/bin/mongo 127.0.0.1:37017/test -uadmin -padmin
MongoDB shell version: 2.0.2
connecting to: 127.0.0.1:37017/test
>
其中test是库名
10.#查看所有数据库
--查看所有数据库
> show dbs;
--切换数据库
> use admin;
--查看正在使用的数据库
> db
--查看当前数据库里有多少个collections
show collections
> show dbs
--查看所有的collection
> show collections
--查看各collection的状态
> db.printCollectionStats()
--查看主从复制状态
> db.printReplicationInfo()
--修复数据库
> db.repairDatabase()
--设置记录profiling,0=off 1=slow 2=all
> db.setProfilingLevel(1)
--查看profiling
> show profile
--拷贝数据库
> db.copyDatabase('mail_addr','mail_addr_tmp')
--删除collection
> db.mail_addr.drop()
--删除当前的数据库
> db.dropDatabase()
PRIMARY> use identify;
switched to db identify
PRIMARY> db.dropDatabase();
{
"assertion" : "Can't take a write lock while out of disk space",
"assertionCode" : 14031,
"errmsg" : "db assertion failure",
"ok" : 0
}
PRIMARY>