说明
本实例环境为:VMware虚拟机centos7系统,安装社区版MongoDB4.4.4。
配置程序包管理系统(使用yum安装)
创建一个 /etc/yum.repos.d/mongodb-org-4.4.repo 文件,以便使用yum命令直接安装MongoDB:
[root@localhost /]# vim /etc/yum.repos.d/mongodb-org-4.4.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
安装MongoDB软件包
安装最新的稳定版MongoDB:
[root@localhost yum.repos.d]# yum install -y mongodb-org
另外,要安装特定版本的MongoDB,请分别指定每个组件包,并将版本号附加到包名中,如下:
yum install -y mongodb-org-4.4.4 mongodb-org-server-4.4.4 mongodb-org-shell-4.4.4 mongodb-org-mongos-4.4.4 mongodb-org-tools-4.4.4
也可以指定任何可用的MongoDB版本。但是yum,当有新版本可用时,将升级软件包。为防止意外升级,请固定安装包。请在 /etc/yum.conf 文件中添加exclude指令:
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
启停MongoDB服务
[root@localhost yum.repos.d]# systemctl start mongod # 启动MongoDB
[root@localhost yum.repos.d]# systemctl restart mongod # 重启MongoDB
[root@localhost yum.repos.d]# systemctl stop mongod # 停止MongoDB
[root@localhost yum.repos.d]# systemctl status mongod # 查看MongoDB状态
[root@localhost yum.repos.d]# systemctl enable mongod # 设置MongoDB开机启动
如果在启动MongoDB时收到类似一下内容的错误时:
Failed to start mongod.service: Unit mongod.service not found.
首先运行一下命令:
systemctl daemon-reload
然后再次运行上面的启动命令。
MongoDB配置
默认的MongoDB配置文件
[root@localhost /]# cat /etc/mongod.conf
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.# 指定MongoDB日志文件
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.# 指定MongoDB数据存放目录
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# wiredTiger:
# how the process runs# MongoDB服务运行方式
processManagement:
fork: true # fork and run in background 后台运行
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017 # MongoDB服务运行端口
bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.允许连接的IP
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
卸载MongoDB
要从系统中完全删除MongoDB,必须删除MongoDB应用程序本身,配置文件以及任何包含数据和日志的目录。
1. 停止MongoDB服务
systemctl stop mongod
2. 删除软件包
删除以前安装的所有MongoDB软件包
yum erase $(rpm -qa | grep mongodb-org)
3. 删除日志和数据目录
删除MongoDB日志文件和数据库
rm -r /var/log/mongodb
rm -r /var/lib/mongo
MongoDB卸载完成。
添加用户、安全认证
首先必须使用admin数据库,进行新用户授权。
MongoDB副本集默认会创建local、admin数据库,local数据库主要存储副本集的元数据,admin数据库则主要存储MongoDB的用户、角色等信息。
> use admin
switched to db admin
> db
admin
> db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
使用访问控制重新启动MongoDB服务
1. 关闭mongod实例,例如:从mongo外壳程序中,发出一下命令:
db.adminCommand( { shutdown: 1 } )
2. 退出mongo外壳
3. 在mongod启用访问控制的情况下启动
1)如果mongod从命令行启动,请添加--auth命令行选项:
mongod --auth --port 27017 --dbpath /var/lib/mongodb
2)如果mongod使用配置文件启用,请添加 security.authorization 配置设置:
security:
authorization: enabled
现在,连接到该实例的客户端必须将自己认证为MongoDB用户。客户只能执行由其分配的角色确定的操作。
以用户管理员的身份连接并进行身份验证
使用mongo外壳,您可以:
通过传递用户凭据连接到身份验证
或者首先连接而不进行身份验证,然后发出db.auth() 进行身份验证
连接期间进行身份验证
连接后进行身份验证
启动mongo外壳以及命令行选项: -u
mongo --port 27017 --authenticationDatabase "admin" -u "myUserAdmin" -p
出现提示时输入密码。
将mongo外壳连接到mongod:
mongo --port 27017
在mongo外壳程序中,切换到身份验证数据库,然后使用auth方法进行身份验证: db.auth(
从mongo shell的4.2版本开始,您可以将passwordPrompt()方法与各种身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo shell中一样直接指定密码。
> use admin
switched to db admin
> db.auth("root",passwordPrompt())
Enter password:
1