mongodb的账户管理

超级管理员
为了更加安全的访问 mongodb,需要访问者提供用户名和密码,于是需要在mongodb 中创建用户
采用了角色-用户-数据库的安全管理方式

常用的的系统角色有:
root: 只在 admin 数据中可使用,超级账户,超级权限。root又称dbOwner
Read: 允许用户读取指定的数据库
readWrite: 允许用户读写指定的数据库

一、创建超级用户
以windows为例
1、启动不鉴权的mongo数据库服务
mongod --port 27017 --dbpath E:\mongo_db

2、创建进入使用admin库名
use admin

3、创建admin用户,密码123,角色为root身份,管理admin数据库

db.createUser(
    {
       user: 'admin',
       pwd: '123',
       roles:[{role:'root',db:'admin'}] 
    }
)

  

4、关闭mongo数据库服务
ctrl+c

5、带鉴权方式启动
mongod --port 27017 --dbpath E:\mongo_db --auth

6、使用认证某个数据方式终端连接
mongo -u admin -p 123 --authenticationDatabase admin
此后的admin可以查看任何数据

延伸:
1、使用无鉴权方式连接数据库
mongo --port 27017
此后的用户无法查看任何数据

2、如果使用不鉴权方式启动mongo数据库服务
mongod --port 27017 --dbpath E:\mongo_db
则admin账号设置是无效的。

二、普通用户管理
使用超级管理员登录,然后进入用户管理操作
查看当前数据库的用户
use demo
show users
创建普通 用户

db.createUser(
    {
       user: 'xingyeah',
       pwd: '123',
       roles:[{role:'readWrite',db:'demo'}] 
    }
)

  

退出 root 连接 使用 xignyeah 登录
mongo -u xingyeah -p 123 --authenticationDatabase
切换数据库,执行命令查看效果

三、修改密码和角色
yoghurt:可以修改密码, 或者roles 属性

# 修改密码
db.updateUser('xingyeah',{pwd: '456'})

# 修改属性
db.updateUser('xingyeah',{roles:[{role: 'read',db:'demo'}]})


四、常见报错
Linux
启用安全认证
修改配置文件
sudo vi /etc/mongod.conf
启用身份验证
注意: keys 和 values 之间一定要加空格,否则会解析报错
security:
authorization enabled

 
posted @ 2020-04-01 17:52  安迪9468  阅读(328)  评论(0编辑  收藏  举报