环境说明: 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