环境说明: centos7.5 安装mongodb 4.0的社区版
安装后添加用户和配置权限

一、准备工作

关闭 SELinux
部分CentOS 可能不存在selinux文件,可以跳过这步。

sudo vim /etc/sysconfig/selinux
sudo yum install vim #如果 vim 指令未安装,那就安装它

找到 SELINUX 然后修改成 disabled.

SELINUX = disabled

二、安装MongoDB

1.添加 MongoDB yum 源

sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo

然后添加以下内容

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

2.安装mongodb:

sudo yum install -y mongodb-org

可以指定MongoDB版本。然而,yum会在新版本可用时升级软件包。如果不想意外升级,可固定软件包,将以下exclude指令添加到/etc/yum.conf文件中:

exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

添加mongodb开机启动

sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

三、设置

1. 添加用户

(1). 超级管理员账号创建

先登录sudo mongo

登录后,使用admin数据库(超级管理员账号必须创建在该数据库上)
use admin
创建超级用户

db.createUser({"user":"用户名","pwd":"密码","roles":["root"]})

(2). 普通用户账号创建

方式一: 在当前使用的数据库上创建普通用户
选择需要创建用户的数据库,例如
use test
创建普通用户

db.createUser("user":"user1", "pwd":"pwd1", roles:["read"])
创建普通用户user1,该用户在test上的权限是只读
db.createUser("user":"user1", "pwd":"pwd1", roles:["readWrite"])
创建普通用户user1,该用户在test上的权限是读写

方式二: 在admin数据库上创建普通用户
一次性赋予用户多个数据库的权限

use admin
db.createUser({"user":"python1", "pwd":"python1", roles:[{"role":"read","db":"dbname1"},{"role":"readWrite","db":"dbname2"}
]})

(3). 查看创建的用户
show users

(4). 删除用户
先use该数据库然后:

db.dropUser('用户名')

2. 关闭巨型页

安装完成后,为了消除 MongoDB 的性能警告,需要关闭 Linux 巨型页(4.0版本开启权限认证后没有该提示):
Linux 巨型页的介绍: 伙伴系统之避免碎片

$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag

3. 打开 MongoDB 权限认证

先添加了用户再设置开启权限
权限问题:从 MONGODB “赎金事件” 看安全问题

(1). MongoDB 4.0版本权限设置:
执行 sudo vim /etc/mongod.conf,找到 security: 这一行,取消注释并改为:

security:
   authorization: enabled

然后重启 MongoDB

sudo systemctl restart mongod

(2). MongoDB旧版3.x 权限设置:
两种方式,一种是mongodb启动时加入–auth参数,另一种是修改配置文件。
在配置文件(默认是/etc/mongodb.conf或mongo.conf或mongod.conf)最后加入

auth=true

然后重启MongoDB

(3). 打开权限认证后的登录方法
未认证没有操作权限
方式一:
使用auth方法认证,例如:

> use admin
switched to db admin
> db.auth('用户名', '密码')
1

创建在admin数据库上的用户,必须来到admin数据库上进行认证。返回1表示认证通过,返回0表示认证失败。

其它用户进入其它数据库也是执行auth方法: db.auth(‘用户名’, ‘密码’)

方式二:
在登录mongo客户端时指定用户名和密码,如下:

mongo -u 用户名 -p 密码 --authenticationDatabase 数据库名

四、常用命令

# 查看mongo安装位置
whereis mongod

# 查看修改配置文件
sudo vim /etc/mongod.conf

# 启动mongodb
sudo systemctl start mongod.service
# 或者
sudo service mongod start

# 重新启动mongodb
sudo systemctl restart mongod.service
# 或者
sudo service mongod restart

# 停止mongodb
sudo systemctl stop mongod.service
# 或者
sudo service mongod stop

# 查看mongodb的状态
systemctl status mongod.service
# 或者
service mongod status

# mongo登录
sudo mongo

# 查看数据库
show dbs

参考资料来源:

mongodb官方教程
NodeBB 文档 CentOS & MongoDB 安装
第三方教程 CentOS 7 安装 MongoDB 3.6