Ubuntu MongoDB 设置用户认证

Ubuntu MongoDB 设置用户认证

MongoDB安装

更新软件包列表

sudo apt update

运行命令安装 mongodb

sudo apt install -y mongodb
查看 monggodb 版本:
mongo -version
开启认证

进入服务器的 etc 目录

cd /etc

编辑 mongodb.conf 文件

sudo vim mongodb.conf

将 bindip 改为 0.0.0.0,将 port=27017 取消注释

把 auth 改为 true

auth = true

重启 mongo

sudo service mongodb restart 

关闭 / 启动

sudo service mongodb stop 
sudo service mongodb start
登陆
mongo
mongodb 中的角色
分类role(角色)简要说明
数据库用户角色(DB User Roles)readreadWrite拥有读写权限
数据库管理员角色(DB Admin Roles)dbAdmindbOwneruserAdmin拥有创建数据库、创建用户的权限
集群管理角色(Culster Administration Roles)clusterAdminclusterManagerclusterMonitorhostManager管理员组, 拥有系统管理权限
备份还原角色(Backup and Restoration Roles)backuprestore拥有备份数据库、还原数据库权限
所有数据库角色(All-Database Roles)readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabase拥有操作 admin 数据库的权限
Superuser Roles(超级管理员)root拥有至高无上的权力
创建用户

首先, 切换到 admin 数据库, 给 admin 创建一个认证的用户,然后创建一个 root 超级管理用户

切换到 admin 数据库

use admin    

创建一个 admin 用户,用于对 admin 数据库进行授权

db.createUser({
	user:'admin', pwd:'qwe123', roles:[
        {role:'dbAdmin', db:'admin'}, 
        {role:'dbOwner', db:'admin'}, 
        {role:'userAdmin', db:'admin'}
	]
})

使用 db.auth('用户名','密码') 进行授权认证,只有认证之后才能对 admin 数据库进行增删改查,否则没有权限

db.auth('admin','qwe123')

完成授权之后, 创建 root 超级管理用户, 可以用该用户登录和管理数据库

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

认证

db.auth('root','717216')

展示所有数据库

show dbs

输出结果:

admin   0.000GB
config  0.000GB
local   0.000GB
stock   0.000GB

切换数据库

use stock

切换数据库之后, 为 stock 创建一个用户,用于登录认证 stock 数据库

db.createUser({
	user: 'test', pwd: 'test', roles: [
		{role: 'readWrite', db: 'stock'}
	]
})

输出一下内容则创建成功

Successfully added user: {
    "user" : "test",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "stock"
        }
    ]
}

问题:为什么要切换到 stock 数据库上创建用户呢?

答:因为只有在 stock 数据库中创建的用户才是这个数据库的用户, 才能在此数据库中完成授权, 但是刚刚创建的用户的信息存放在 admin 数据库中

查看用户信息

切换到 admin 库, 看一下我们创建的用户,

use admin
db.system.users.find({user:'test'})

输出信息:

{
	"_id": "stock.test", 
	"user": "test", 
	"db": "stock", 
	"credentials": {
		"SCRAM-SHA-1": {
			"iterationCount": 10000, 
			"salt": "CW0nvUZjVvlEqQPVbUAKpw==", 
			"storedKey": "zAPux5oBIOCb3PSZdMPDmFl1WkE=",
            "serverKey": "aRFnK5cD1FQAkQeTU8eYvaZ0lQE="
		}
	}, 
	"roles": [{"role": "readWrite", "db": "stock"}]
}

数据读写

为了避免之前授权 root 用户的影响, 我们先退出客户端 ,再登陆授权

use stock

test 用户登录授权

db.auth('test','test')

输出信息:

2021-12-08T00:12:10.572+0800 I ACCESS   [conn3] Successfully authenticated as principal test on stock
1

插入数据

db.Hello.insert({name:'World'})

输出信息:

WriteResult({ "nInserted" : 1 })

查找数据

db.Hello.find()

输出信息:

{"_id": ObjectId("58beda12ff72a6c747135225"), "name": "World"}
修改用户密码

创建用户或更新用户,需要 userpwdroles 三个属性

db.updateUser('test', {user: 'test', pwd: 'admin', roles:[{role: 'read', db: 'testDB'}]})
删除用户
> use stock
switched to db stock
> db.dropUser('test')
true
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值