Centos 使用yum安装MongoDB 4.0 以及 mongodb 用户授权

1.配置yum源

cd /etc/yum.repos.d 

vim mongodb-org-4.0.repo

2.加入源内容(阿里云的源)

[mngodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.0/x86_64/
gpgcheck=0
enabled=1

3.更新包

yum update

4.安装mongodb4.0

yum -y install mongodb-org

5.修改配置文件

vim /etc/mongod.conf

修改date文件位置,给目录加权限,更改属主属组等
127.0.0.1  修改为  0.0.0.0   别的机器才能连接

6.启动

systemctl start mongod.service

  

要设置账号密码的话,进入admin库,设置好账号密码后,修改配置文件后重启mongod服务即可:

#security:
            authorization: enabled

  

设置账号密码:

> use admin           #切换到admin库下
> db.createUser({user:"superadmin",pwd:"123456",roles:[{role:'root',db:'admin'}]})  #创建超级管理员用户
> db.createUser({user:'useradmin',pwd:'123456', roles:[{role:'userAdminAnyDatabase', db:'admin'}]})  #创建用户管理员账户(能查询其他库集合,但不能查询集合内容)
> db.createUser({user:'admin',pwd:'123456', roles:[{role:'readWriteAnyDatabase', db:'admin'}]})  #创建访问任意库读写的账户
> db.createUser({user:"bkuser2",pwd:"123456",roles:[{role:"backup",db:"admin"}]})   #创建备份数据的账户
> db.createUser({user:"rtuser3",pwd:"123456",roles:[{role:"restore",db:"admin"}]})   #创建还原数据的账户
注意:新建备份、恢复账户时,roles里面的db必须填写admin,不然会报错
> use test   #切换到test库
> db.createUser({user:'user1',pwd:'user1',roles:[{role:'readWrite',db:'test'}]})  #创建只对test库有读写权限的账户

 用户验证

 用户在哪个库新建账户授权,就需要在哪个库进行auth验证,账号是跟着库走的,所以在指定库里授权,必须也在指定库里进行账户验证。

> db     #查看当前所在库
Admin    #当前位置在admin库下,用户验证只能验证在admin库里授权的账户
> show tables   #查看当前所在库下的所有集合
> db.auth("superadmin","123456")       #验证账户superadmin,返回值为1,代表没问题,可以使用
1
> db.auth("useradmin","123456")     #验证账户useradmin,返回值为1,代表没问题,可以使用
1
> db.auth("user1","user1")   #在admin库下验证user1,报错身份验证失败,返回值为0(因为该用户实在test库下)
Error: Authentication failed.
0
> use test     #切换到test库
switched to db test
> db.auth("user1","user1")   #在test库验证user1,返回值为1,代表没问题,可以使用
1
说明:账户在哪个库创建,就要在哪个库认证,并且使用调用脚本链接时,要选择好用户,比如我要用脚本调用链接test库,就需要在test库下面创建一个读、写、读写(具体视情况而定)的权限的账户。

  查询账户

查询所有的账户信息:
> use admin   #切换到admin库下
> db.system.users.find()    #查看system.users集合,里面有所有授权的账户信息
查询某一库下的所有用户:
>use test   #切换到所对应的库
>show users   #显示在此库授权的用户信息
查询指定用户的相关信息:
> db.getUser("user1")
{
	"_id" : "test.user1",
	"user" : "user1",
	"db" : "test",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "test"
		}
	]
}
> db.getUser("root")     #查询的账户没有在当前授权库的时候会报null值
Null

  修改用户权限

可以通过如下命令修改账户权限,但使用此命令修改权限时,会覆盖原先的所有权限
> use admin     #切换到admin库
> db.getUser("king")    #查看king账户的信息
{
	"_id" : "admin.king",
	"user" : "king",
	"db" : "admin",
	"roles" : [
		{
			"role" : "restore",
			"db" : "admin"
		}
	]
}
> db.updateUser("king",{roles:[{role:"readAnyDatabase",db:"admin"}]})   #修改账户king的权限
> db.getUser("king")    #查询账户king的权限
{
	"_id" : "admin.king",
	"user" : "king",
	"db" : "admin",
	"roles" : [
		{
			"role" : "readAnyDatabase",
			"db" : "admin"
		}
	]
}
在原来的权限上新增权限:
> db.getUser("liushubo")    #查询账户liushubo的权限信息
{
	"_id" : "admin.liushubo",
	"user" : "liushubo",
	"db" : "admin",
	"roles" : [
		{
			"role" : "backup",                      #数据备份权限
			"db" : "admin"
		}
	]
}
> db.grantRolesToUser("liushubo",[{role:"restore",db:"admin"}])      #给账户liushubo添加数据恢复权限
> db.getUser("liushubo")            #查询账户liushubo的权限信息
{
	"_id" : "admin.liushubo",
	"user" : "liushubo",
	"db" : "admin",
	"roles" : [
		{
			"role" : "restore",     #数据备份权限
			"db" : "admin"
		},
		{
			"role" : "backup",     #数据恢复权限
			"db" : "admin"
		}
	]
}

  修改账户密码

使用db.changeUserPassword(“username","newPasswd") 修改
> db.changeUserPassword("user1","123456")     #修改账户user1的密码为123456

  删除用户

> db.dropUser("user1")    #删除账户user1
true

  ………………………………

posted @ 2020-08-29 04:04  江戸川のコナン  阅读(262)  评论(0编辑  收藏  举报
……