MongoDB单机版设置密码登录

https://www.jianshu.com/p/79caa1cc49a5

https://blog.csdn.net/somehow1002/article/details/79394580

1.创建user administrator

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

2. 重启mongo

停止: mongod -shutdown -dbpath=/data/mongod/data
启动: mongod --dbpath=/data/mongod/data --logpath=/data/mongod/log/mongodb.log --logappend --port=27017 --fork --auth

增加--auth 参数

3. 登录

现在有两种方式进行用户身份的验证
第一种 (类似 MySql)
客户端连接时,指定用户名,密码,db名称

mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"

第二种
客户端连接后,再进行验证

mongo --port 27017
use admin
db.auth("adminUser", "adminPass")

4.创建普通用户

过程类似创建管理员账户,只是 role 有所不同

use foo

db.createUser(
  {
    user: "simpleUser",
    pwd: "simplePass",
    roles: [ { role: "readWrite", db: "foo" },
             { role: "read", db: "bar" } ]
  }
)

5 URI 形式的访问

生产中常用 URI 形式对数据库进行连接

mongodb://your.db.ip.address:27017/foo
添加用户名密码验证

mongodb://simpleUser:[email protected]:27017/foo

6 内建角色

Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在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


 

猜你喜欢

转载自blog.csdn.net/zhuchunyan_aijia/article/details/118891044