MongoDB设置密码登录

1.创建user administrator

> use admin
> db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
关于roles

官方文档:https://docs.mongodb.com/manual/reference/built-in-roles/
常用的有:

  • 数据库普通用户角色

    • read
    • readWrite
  • 数据库管理者角色

    • dbAdmin
    • dbOwner:
    • userAdmin
  • 集群管理角色

    • clusterAdmin
    • clusterManager
    • clusterMonitor
    • hostManager
  • 备份与还原角色

    • backup
    • restore
  • 所有数据库角色(对所有数据库有效)

    • readAnyDatabase
    • readWriteAnyDatabase
    • userAdminAnyDatabase
    • dbAdminAnyDatabase
  • 超级角色

    • root
  • 内部角色

    • __system

2.启用验证

/etc/mongo.conf中

security:
  authorization: enabled

3.重启mongo

> sudo service mongod restart

4.再次登录即需要密码

此时可以

  1. 先连接,再认证
somehow@ubuntu:/home/wwwroot$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
> use admin
switched to db admin
> db.auth('root','root')
1

其中1代表认证成功

2.连接时认证

mongo -u root -p root --authenticationDatabase 'admin'

类似于mysql的验证,authenticationDatabase是认证时的数据库