MongoDB linux下安装

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    # 删除数据文件

远程连接

1. 修改配置

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.
2. 重启

sudo service mongod restart

3. 开放端口
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则失败
4. 远程连接

mongo your server address:27017

设置密码

1(创建)进入admin数据库

use admin

2. 创建管理员账号

db.createUser({ user: "root", pwd: "123456", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

3. 测试

db.auto('root','123456') 返回1则正确

4. 开启验证

sudo vi /etc/mongod.conf
修改
#security:

security:
  authorization: enabled
5. 重启服务

sudo service mongod restart

6. 测试admin数据库

mongo进入数据库,use admin切换到admin数据库,运行show users会报错,因为你没有验证身份,需要先验证db.auth('root','123456'),再次运行show users则显示应有信息。

7. 创建其他数据库密码

首先需要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']})

8. 测试其他数据库

exit退出数据再重新进入mongo,use test进入test数据库,show collections尝试查询集合,报错。db.auth('test','test')验证登录,再次查询集合show collections,不报错(无collection时会不显示任何信息)。

9. 测试远程连接

mongo your server address:27017/test,测试权限,方法同第8步。

10. 完成~~

角色表

分类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(超级管理员)rootdbOwner 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

相关推荐