mongodb安装以及权限管理

mongodb安装以及权限管理

一、mongodb下载

官网:https://www.mongodb.com/

下载:https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.13.tgz/download

1.1、客服端链接工具

Windows上连接MongoDB图形化工具:studio-3t:https://robomongo.org/

二、安装

该案例安装版本为:4.0版本

安装目录为:/usr/local/mongodb

将mongodb下载,并上传到/usr/local/mongodb目录中。

2.1、创建mongodb.conf文件

/usr/local/mongodb/mongodb-linux-x86_64-4.0.13/bin目录下

touch mongodb.conf

写入配置文件

#端口号
port = 27017

# 数据存放目录
dbpath=/usr/local/mongodb/data

# 日志存放目录
logpath=/usr/local/mongodb/logs/mongo.log

#后台运行
fork=true

#允许任何IP进行连接
bind_ip=0.0.0.0

#使用追加的方式写入日志
logappend=true

#最大同时链接书
maxConns=100

#存储引擎有 mmap1、 wiretiger、 mongorocks
storageEngine=wiredTiger

#每次写入会记录一条操作日志(通过journal可以重新构造处写入的数据)
journal=true

#是否授权连接
auth=true

**注意:**有评论说,这个配置文件不能写入中文,但是我写入中文时没有问题的。如果遇到写入中文不行的情况,可以将中文去掉。

**重点强调:**这里的auth设置为true的,但是当前没有用户,第一次链接是可以不使用用户名和密码登录,但是不能操作数据。所以第一次安装的时候需要将auth设置为false,创建完用户之后在设置为true。重启MongoDB数据库即可。

2.2、创建日志目录和数据持久化目录

mkdir -p /usr/local/mongodb/data
mkdir -p /usr/local/mongodb/logs
# 创建日志文件
touch mongo.log
  • 启动

cd bin/

./mongod  -f  mongodb.conf
  • 关闭
./mongod  --shutdown
  • 查看
ps -ef | grep mongo
或者
netstat  -anp  |grep 27017
  • 查看端口占用情况
lsof -i tcp:27017

三、MongoDB认证、添加用户、用户权限控制

​ mongodb安装好后第一次进入是不需要密码的,也没有任何用户。 在安装MongoDB之后,先关闭auth认证,创建号管理账号之后在开启auth认证,重启MongoDB

​ MongoDB的帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。

3.1、设置超级管理员

use.admin  
db.createUser({
  user: 'root',  // 用户名
  pwd: '123456',  // 密码
  roles:[{
    role: 'root',  // 角色
    db: 'admin'  // 数据库
  }]
})

使用show users命令查询是否存在,该命令表示查询该数据库下的所有用户。

user:用户名

pwd:密码

roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色role里的角色

3.2、登录数据库

  • 方式一
mongo
use admin
db.auth('admin', '123456')
  • 方式二
mongo admin -u admin -p 123456

第一个admin表示数据库,第二个admin表示用户名

3.2、添加数据库用户

给每个数据库设置单独的管理员 ,只有操作单独数据的一定权限。

use test  // 跳转到需要添加用户的数据库
db.createUser({
  user: 'fooadmin',  // 用户名
  pwd: '123456',  // 密码
  roles:[{
    role: 'readWrite',  // 角色
    db: 'test'  // 数据库名
  }]
})

3.3、常用的命令

show users  // 查看当前库下的用户

db.dropUser('testadmin')  // 删除用户

db.updateUser('admin', {pwd: '654321'})  // 修改用户密码

db.auth('admin', '654321')  // 密码认证

3.4、内置角色

  • Built-In Roles(内置角色)
  1. 数据库用户角色:readreadWrite;

  2. 数据库管理角色:dbAdmindbOwneruserAdmin

  3. 集群管理角色:clusterAdminclusterManagerclusterMonitorhostManager

  4. 备份恢复角色:backuprestore

  5. 所有数据库角色:readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabase

  6. 超级用户角色:root

// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwneruserAdminuserAdminAnyDatabase

  1. 内部角色:__system
  • 具体角色

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

刚建立了 userAdminAnyDatabase 角色,用来管理用户,可以通过这个角色来创建、删除用户。

3.5、创建数据库用户

db.createUser(
  {
    user: "db",
    pwd: "jp_123",
    roles: [ { role: "readWrite", db: "wx_applet" } ]
  }
)

认证后才能操作数据库

db.auth("db","jp_123")

一定要注意角色,有些角色只能读,而不能写。不要傻乎乎的配置一个角色,怎么感觉一直不能写入数据。也要注意你现在认证的是那个角色,db.auth('admin', '123456')

四、权限认证

权限是跟着数据库走的,在 Studio 3T中重新打开一个编辑区都需要权限认证一次。

db.auth("root","123456")

如果返回 1表示认证成功,否则失败。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值