MongoDB配置用户和权限开启认证

  • 前提:安装好了mongodb
  • 创建账号

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

mongo
use admin
#创建一个管理账号(role有个表参照下面)
db.createUser({user:'root',pwd:'root',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
  • 修改配置

启用安全规则
security:
authorization: enabled
绑定外网IP并允许其他IP访问,这样其他机器就可以通过192.168.0.159来访问了
net:
port: 27017
bindIp: 192.168.0.159
bindIpAll: true

vi /etc/mongod.conf

内容如下

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 192.168.0.159
  bindIpAll: true

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo
#security:
security:
  authorization: enabled
#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:
#snmp:

  • 重启mongod服务
sudo systemctl restart mongod

由于MongoDB的用户是分数据库的,分角色的,我们实际业务操作数据库读写的时候,到业务数据库另外建立一个账号并赋予读写角色即可,下面示范,假定我们的数据库是mall

mongo
use admin
db.auth('root','root')
use mall
db.createUser({user:'root',pwd:'yourpassword',roles:[{role:'readWrite',db:'mall'}]})

在这里插入图片描述

posted @ 2021-03-08 15:12  HumorChen99  阅读(2)  评论(0编辑  收藏  举报  来源