MongoDB linux下安装与设置密码

4,341 阅读3分钟

创建.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(超级管理员) 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