Centos 7
创建.repo 文件,生成 mongodb 的源
vi /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
安装
选择下载
- 最稳定版本
sudo yum install -y mongodb-org
- 指定版本
sudo yum install -y mongodb-org-4.0.11 mongodb-org-server-4.0.11 mongodb-org-shell-4.0.11 mongodb-org-mongos-4.0.11 mongodb-org-tools-4.0.11
- 不升级版本
exclude = mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
验证安装
rpm -qa |grep mongodb
rpm -ql mongodb-org-server
启动
启动服务systemctl start mongod.service
开启端口netstat -natp | grep 27017
查看进程ps -aux | grep mongod
验证mongo
常用命令
// 1、开启 MongoDB
sudo service mongod start 或者 systemctl start mongod.service # 开启 MongoDB
sudo chkconfig mongod on # 加入开机启动
sudo service mongod restart # 重启 MongoDB
// 2、关闭 MongoDB
sudo service mongod stop # 关闭防火墙
// 3、卸载 MongoDB
sudo yum erase $(rpm -qa | grep mongodb-org) # 卸载 MongoDB
sudo rm -r /var/log/mongodb # 删除日志文件
sudo rm -r /var/lib/mongo # 删除数据文件
远程连接
- 修改配置
vi /etc/mongod.conf
# network interfaces
net:
port: 27017
# 127.0.0.1 仅能主机连接,需改成 0.0.0.0
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
- 重启
sudo service mongod restart
- 开放端口
systemctl status firewalld # 查看防火墙状态
firewall-cmd --zone=public --add-port=27017/tcp --permanent # mongodb 默认端口号
firewall-cmd --reload # 重新加载防火墙
firewall-cmd --zone=public --query-port=27017/tcp # 查看端口号是否开放成功,输出 yes 开放成功,no 则失败
- 远程连接
mongo your server address:27017
设置密码
- (创建)进入 admin 数据库
use admin
- 创建管理员账号
db.createUser({user: "root", pwd: "123456", roles: [{ role: "userAdminAnyDatabase", db: "admin"}] })
- 测试
db.auto('root','123456')
返回 1
则正确
- 开启验证
sudo vi /etc/mongod.conf
修改 #security:
为
security:
authorization: enabled
- 重启服务
sudo service mongod restart
- 测试 admin 数据库
mongo
进入数据库,use admin
切换到 admin 数据库,运行 show users
会报错,因为你没有验证身份,需要先验证 db.auth('root','123456')
,再次运行show users
则显示应有信息。
- 创建其他数据库密码
首先需要 use admin
切换到 admin 验证身份db.auth('root','123456')
, 再切换到 test 数据库use test
,即在对应数据库创建用户权限才能成功。在此创建一个对 test 数据库读写创建删除权限,其他数据库只读权限的用户。db.createUser({user:'test',pwd:'test',roles:[{role:'readWrite',db:'test'},{role:'dbAdmin',db:'test'},'read']})
- 测试其他数据库
exit
退出数据再重新进入 mongo
,use test
进入 test 数据库,show collections
尝试查询集合,报错。db.auth('test','test')
验证登录,再次查询集合show collections
,不报错(无 collection 时会不显示任何信息)。
- 测试远程连接
mongo your server address:27017/test
, 测试权限,方法同第 8 步。
- 完成~~
角色表
分类 | role(角色) | 简要说明 |
---|---|---|
数据库用户角色(DB User Roles) |
read readWrite
|
为某个数据库创建一个用户, 分配该数据库的读写权力 |
数据库管理员角色(DB Admin Roles) |
dbAdmin dbOwner userAdmin
|
拥有创建数据库, 和创建用户的权力 |
集群管理角色(Culster Administration Roles) |
clusterAdmin clusterManager clusterMonitor hostManager
|
管理员组, 针对整个系统进行管理 |
备份还原角色(Backup and Restoration Roles) |
backup restore
|
备份数据库, 还原数据库 |
所有数据库角色(All-Database Roles) |
readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase
|
拥有对 admin 操作的权限 |
Superuser Roles(超级管理员) | root |
dbOwner userAdmin userAdminAnyDatabase 这几个角色角色提供了任何数据任何用户的任何权限的能力,拥有这个角色的用户可以在任何数据库上定义它们自己的权限 |
角色描述
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile
- userAdmin:允许用户向 system.users 集合写入,可以在指定数据库里创建、删除和管理用户
- clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限
- dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。
- root:只在 admin 数据库中可用。超级账号,超级权限
角色操作
User Management Methods — MongoDB Manual