MongoDB数据库安装与卸载及配置
说明
本实例环境为: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 <username> -p --authenticationDatabase <database>
mongo --port 27017 --authenticationDatabase "admin" -u "myUserAdmin" -p
出现提示时输入密码。
将mongo外壳连接到mongod:
mongo --port 27017
在mongo外壳程序中,切换到身份验证数据库,然后使用auth方法进行身份验证: db.auth(<username>,<pwd>) 。
从mongo shell的4.2版本开始,您可以将passwordPrompt()方法与各种身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo shell中一样直接指定密码。
> use admin switched to db admin > db.auth("root",passwordPrompt()) Enter password: 1