MongoDB常用命令
> show dbs #显示数据库列表
> show collections #显示当前数据库中的集合(类似关系数据库中的表)
> show users #显示用户
> use <db name> #切换当前数据库,如果数据库不存在则创建数据库。
> db.help() #显示数据库操作命令,里面有很多的命令
> db.foo.help() #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
> db.foo.find() #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
> db.foo.find({a: 1}) #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
> db.dropDatabase() #删除当前使用数据库
> db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库
> db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中
> db.repairDatabase() #修复当前数据库
> db.getName() #查看当前使用的数据库,也可以直接用db
> db.stats() #显示当前db状态
> db.version() #当前db版本
> db.getMongo() #查看当前db的链接机器地址
> db.serverStatus() #查看数据库服务器的状态
1、添加管理员账号
> use admin
> db.createUser({user: "admin", pwd: "admin", roles: ["root"]})
> db.createUser({user: "admin", pwd: "admin", roles: [{role: "userAdminAnyDatabase", db: "admin"}]})
2、添加普通用户(假定数据库名是test)
> use test
> db.createUser({user: "test", pwd: "test", roles: [{role: "readWrite", db: "test"}]})
分类 |
role(角色) |
简要说明 |
数据库用户角色(DB User Roles) |
read readWrite |
为某个数据库创建一个用户, 分配该数据库的读写权力 |
数据库管理员角色(DB Admin Roles) |
dbAdmin dbOwner userAdmin |
拥有创建数据库, 和创建用户的权力 |
集群管理角色(Culster Administration Roles) |
clusterAdmin clusterManager clusterMonitor hostManager |
管理员组, 针对整个系统进行管理 |
备份还原角色(Backup and Restoration Roles) |
backup restore |
备份数据库, 还原数据库 |
所有数据库角色(All-Database Roles) |
readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase |
拥有对admin操作的权限 |
Superuser Roles(超级管理员) |
root |
dbOwner userAdmin userAdminAnyDatabase这几个角色角色提供了任何数据任何用户的任何权限的能力,拥有这个角色的用户可以在任何数据库上定义它们自己的权限 |
3、更新用户
> db.updateUser('test', {user: "test", pwd: "test", roles: [{role: "readWrite", db: "test"}]})
4、删除用户
> db.dropUser('admin')
5、开启权限验证
在mongod.conf中的 security 节点中添加
security:
authorization: enabled
并重启mongod服务
如果从命令行启动数据库需加 --auth 参数
# mongod --auth
命令行使用开启用户权限的数据库
> use test
> db.auth('test', 'test')
1
> show collections
使用mongoose链接开启用户权限的数据库
1、使用mongoose.connect和mongoose.createConnection
db = mongoose.createConnection('mongodb://test:test@localhost:27017/test');
2、使用Connection#open
db.open('localhost', 'test', 27017, {user:'test', pass:'test'});
注意:如果链接有用户权限的数据库,port端口号是必须的,哪怕是默认的27017。