likes
comments
collection
share

基于centos7的保姆级MongoDB的安装与配置攻略

作者站长头像
站长
· 阅读数 2

前言

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案

它的特点是高性能、易部署、易使用,存储数据非常方便。

一、安装

在centos7上安装mongodb,以阿里云服务器为例,一般有两种方式

1、宝塔面板安装

现在的阿里云服务器,初始化服务器时,就可选择宝塔镜像,所以可以在服务器初始化完成后,通过IP/域名+端口8888来访问宝塔面板

然后在软件商店内搜索Mongodb就可以安装了,安装完成后去安全策略里打开27017端口就可以使用了。

但是此方法安装的mongodb有很大局限性,很多路径与配置无法自定义,故不推荐 。

2、通过yum命令下载对应包来安装

2.1、配置yum源

/etc/yum.repos.d/ 目录下 创建 mongodb-org-4.2.repo 文件 (这里的版本可以自行指定,本文使用4.2版本)并添加如下命令

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

2.2、开始下载

  • 完全安装
yum install  -y mongodb-org
  • 安装指定组件

mongodb还可以安装指定的组件,只需要指定组件名称和版本号

yum install  -y mongodb-org-4.2.2 mongodb-org-server-4.2.2 mongodb-org-shell-4.2.2 mongodb-org-mongos-4.2.2 mongodb-org-tools-4.2.2

2.3、创建默认目录

默认情况下,MongoDB使用mongod用户帐户运行,默认目录如下:

  • /var/lib/mongo (数据目录)
  • /var/log/mongodb (日志目录)

如果没有 需要我们手动创建

mkdir -p  /var/lib/mongo
mkdir -p  /var/log/mongodb

3、运行mongodb

3.1 启动

systemctl start mongod

3.2 重启

systemctl restart mongod

3.3 停止

systemctl stop mongod

3.4 设置开机自启动

chkconfig  mongod on

3.5 使用

mongo

exit

二、设置远程访问

查看Mongodb的安装目录 whereis mongod

mongodb的默认安装目录文件如下:

mongod: /usr/bin/mongod /etc/mongod.conf /usr/share/man/man1/mongod.1

修改mongod.conf 文件,bindIP:127.0.0.1 修改为:0.0.0.0

最后要记得关闭防火墙或者把Mongodb的端口号:27017加入到安全组。

centos7关闭防火墙命令如下:

systemctl stop firewalld.service   #停止firewall
 
systemctl disable firewalld.service  #禁止firewall开机启动

接下来就可通过IP/域名:27017使用一些可视化连接工具来操作数据库了(这里推荐使用Robo3t,用了都说好:))

三、数据库权限访问

默认情况下,mongodb设置了远程访问后,就可自由的访问每个库。但是从安全的角度来看,这样存在很大的隐患,所以我们来配置对数据库、集合访问的权限限制。

mongodb有一个用户管理机制,简单描述为,有一个管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员。

管理员通常没有数据库的读写权限,只有操作用户的权限, 因此我们只需要赋予管理员userAdminAnyDatabase角色即可。

另外管理员账户必须在admin数据库下创建,3.0版本后没有admin数据库,但我们可以手动use一个。注:use命令在切换数据库时,如果切换到一个不存在的数据库,MongodDB会自动创建该数据库。

首先通过命令sudo mongomongo来进入数据库操作。然后通过use admin进入到admin库

基于centos7的保姆级MongoDB的安装与配置攻略

可以通过db.system.users.find()函数来查看admin库中的所有用户信息

1、创建管理员用户

db.createUser({
  user:"root", // 用户名
  pwd:"root", // 密码
  roles:[ //具体权限 
    {
      role:"userAdminAnyDatabase" 
     ,db:"admin"
    },
    {
      role:"readWriteAnyDatabase",
      db:"admin"
    }
  ]
})

// db:指定该用户的数据库,admin是用于权限控制的数据库,如果没有需要新建一个
// roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:
Built-In Roles(内置角色):
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root  
    7. 内部角色:__system
具体角色的功能: 

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

成功后会看到

基于centos7的保姆级MongoDB的安装与配置攻略 然后退出重启数据库

2、开启权限验证

打开mongodb配置文件sudo vim /etc/mongod.conf 添加authorization 配置

// /etc/mongod.conf


...
# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
 
 
security:
 authorization: enabled // endable 开启  disable 关闭
 
... 

不同的配置可能不一,还有一种方式是添加auth=true

修改完成后重启数据库

3、用户验证

此时进入admin库后查看库里的用户 会提示没有权限

基于centos7的保姆级MongoDB的安装与配置攻略

使用db.auth(用户名,密码)认证后即可成功

基于centos7的保姆级MongoDB的安装与配置攻略

4、创建普通用户

首先用管理员登录, 然后使用show dbs查看都有哪些数据库

基于centos7的保姆级MongoDB的安装与配置攻略

接下来我们就在test数据库内创建用户

首先切换到test数据库 (test数据库不存在时会自动创建)

基于centos7的保姆级MongoDB的安装与配置攻略

然后通过createUser创建用户

基于centos7的保姆级MongoDB的安装与配置攻略

创建成功后重新打开tab然后进入到test数据库,此时进行数据库操作时,就会提示缺少用户权限验证

基于centos7的保姆级MongoDB的安装与配置攻略

我们进行权限验证后重试 此时就可以成功操作了

基于centos7的保姆级MongoDB的安装与配置攻略

5、用户角色修改

如果我们需要对已存在的用户的角色做修改,那么我们可以使用db.updateUser()函数来更新用户角色。注意,该函数需要当前用户具有userAdminAnyDatabase或者更高的权限。

db.updateUser("用户名",{roles:[{"role":"已有权限","db":"操作数据库“},{"role":"更新权限","db":"操作数据库“}]})

基于centos7的保姆级MongoDB的安装与配置攻略

目前test数据库下的test用户只有userAdminAnyDatabase权限,我们来加上dbAdmin权限

基于centos7的保姆级MongoDB的安装与配置攻略

如果没有提示任何信息则表示更新成功。退出并重新链接数据库即可生效。此时用户test就多了dbAdmin权限

基于centos7的保姆级MongoDB的安装与配置攻略

6、更改用户密码

更新用户密码有两种方式:

1)使用db.updateUser()函数更新密码。

db.updateUser("用户名",{"pwd":"新密码"})

基于centos7的保姆级MongoDB的安装与配置攻略

2)使用db.changeUserPassword()函数更新密码

db.changeUserPassword("用户名","新密码")

基于centos7的保姆级MongoDB的安装与配置攻略

7、删除用户

通过db.dropUser()函数可删除指定用户。删除成功后会返回true。在删除用户时需要切换到创建时用户所指定的数据库中才可以删除。注意:需要使用具有userAdminAnyDatabse角色管理员用户才可以删除其他用户。

基于centos7的保姆级MongoDB的安装与配置攻略

参考文章:www.cnblogs.com/yucongblog/…

转载自:https://juejin.cn/post/7008427117318766628
评论
请登录