环境:
操作系统:centos 6.9
MongoDB版本:mongodb community edition 3.4
一、MongoDB安装
- 创建yum源
vi /etc/yum.repos.d/mongodb-org-3.4.repo
- 配置yum源
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
- 使用yum进行安装
yum install -y mongodb-org
- 启动mongod服务
systemctl start mongod
二、MongoDB配置
-
初次启动mongo时会有如下警告信息
这是由于mongo建议禁用系统大内存页面,解决方法:
执行如下命令
重启mongod服务echo never >> /sys/kernel/mm/transparent_hugepage/enabled echo never >> /sys/kernel/mm/transparent_hugepage/defrag
- 数据存储目录配置
mongodb默认配置文件为/etc/mongod.conf
- 用户认证配置
mongodb默认是没有用户名和密码,也不启用安全认证。
启用安全认证:- 创建一个初始管理账号(此时不能开启认证)
> use admin > db.createUser( ... { ... user: 'admin', ... pwd: 'admin', ... customData: {"description": "管理员用户"}, ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ... } ...)
内置角色:
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root (如果用户同时有dbOwner 、userAdmin、userAdminAnyDatabase三个角色,就间接或直接提供了系统超级用户的访问)
所有数据库角色和超级用户角色只能在admin库中授权
其中常用的权限:
readWrite : 支持find、insert、remove、update等;
userAdmin:支持createUser、createRole、changePassword等;
dbAdmin:支持dbstats、find、listCollections、dropCollection等;
dbOwner:是readWrite、userAdmin、DBAdmin的权限集合;
注:一个用户可以拥有多个数据库的不同权限,但是在哪个数据库下创建的用户就要在哪个数据库下进行认证!
- 修改配置文件(/etc/mongod.conf)开启安装认证,并重启mongod服务
去掉security前面#号,添加authorization: enabled
- 认证
> use admin
> db.auth('admin', 'admin') # db.auth(username, pwd)