1 以非认证模式启动mongod

  1. mongod -f mongod.conf

mongod.conf

  1. port=27027
  2. dbpath=/path/to/db
  3. logpath=/path/to/log
  4. fork=true
  5. auth=false

在admin数据库中添加超级用户

  1. > use admin
  2. > db.createUser({
  3. user: 'root',
  4. pwd: 'root-password',
  5. roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]
  6. })

用户角色

  • 数据库用户角色:read、readWrite;

  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;

  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

  • 备份恢复角色:backup、restore;

  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  • 超级用户角色:root

  • // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

  • 内部角色:__system

2 以认证模式启动mongod

  1. auth=ture

连接数据库,先进行超级用户认证

  1. > use admin
  2. > db.auth('root', 'root-password')
  3. # 1

再创建新的数据库,并添加普通用户

  1. > use test
  2. > db.createUser({
  3. user: 'test',
  4. pwd: 'test123',
  5. roles: [{role: 'readWrite', db: 'test'}]
  6. })

现在就可以使用test用户来进行test数据库的读写了,example:

  1. > use test
  2. > db.auth('test', 'test123')
  3. > db.onepiece.insert({name: 'zoro'})
  4. > db.onepiece.insert({name: 'luffy', age: 18})
  5. > db.onepiece.find().pretty()

PS: 也可以连接时直接认证

  1. mongo -u test -p test123 localhost:27027/test

3 命令行模式执行mongodb语句(js)

将语句写在一个文件中,如create_normal.js

  1. use admin;
  2. db.auth('admin', 'admin-password');
  3. use novodb;
  4. db.createUser({
  5. user: 'normal',
  6. pwd: 'normal-password',
  7. roles: [{
  8. role: 'readWrite',
  9. db: 'novodb'
  10. }]
  11. })

然后再命令行中执行

  1. mongo --port xxx < create_normal.js