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'}]})
本文来自博客园,作者:HumorChen99,转载请注明原文链接:https://www.cnblogs.com/HumorChen/p/18039656