目录

一、mongodb安装

1.1 Windows安装成服务

1.2  Linux CentOS7.9安装mongodb

1. Archive:

2. Server Package:

3. Mongos Package:

二、mongodb数据迁移

三、mongodb密码设置

1)启动mongodb命令

2)切换到mongo命令模式:

3)安装成windows服务

4)常用命令

四、mongo命令行客户端建立连接

4.1 指定用户名密码

4.2 最简版本

4.3 带端口

4.4 修改密码:

4.5 删除单个用户:

4.6 启动mongodb

  4.6.1 普通方式启动:

4.6.2 启动带访问控制的 Mongodb

4.6.3 筛选字段

五、安全性

5.1 mongodb有密码,且密码足够复杂

5.2 端口不采用默认端口

5.3 用户管理

5.4 mongocompass连接:

5.5 创建用户:

5.6 查看用户权限:

5.7 用户授权

六、其他问题

6.1 外网连不通服务器的问题

6.2 mongodb时区问题处理


一、mongodb安装

1.1 Windows安装成服务

mongod --config "C:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg" --install

1.2  Linux CentOS7.9安装mongodb

(1)选版本。访问 MongoDB 支持矩阵 查看官方支持的操作系统和 MongoDB 版本。

从支持矩阵中可以看到,CentOS7.9可以安装的最高版本是:MongoDB7.0。

我们打算安装社区版本,因为社区版本不需要付费。

(2)下载包。访问MongoDB Community Downloads | MongoDB可以下载不同的版本的安装包。此链接提供了三种不同的包,有些区别:

  • Archive (tgz): 适合手动安装,包含 MongoDB 的所有组件,用户需要自行配置和运行各个组件。
  • Server Package (rpm): 包含 MongoDB 服务器守护进程 mongod,适合通过包管理器安装和管理,提供核心数据库功能。
  • Mongos Package (rpm): 包含 MongoDB 路由进程 mongos,专用于分片集群的环境中,通过包管理器安装和管理。

1. Archive:

        mongodb-linux-x86_64-rhel70-7.0.12.tgz

  • 内容: 这是一个压缩的 tarball 包含了 MongoDB 的所有组件,包括 mongodmongos、客户端工具(如 mongo shell)、以及相关的库和头文件。
  • 用途: 适用于手动安装 MongoDB。用户可以解压这个文件并手动配置和运行 MongoDB。
  • 安装方法:
    • 下载并解压缩包:
      tar -xzvf mongodb-linux-x86_64-rhel70-7.0.12.tgz 
    • 将解压后的目录添加到 PATH 中或直接运行里面的可执行文件。
    例如:
    ./mongodb-linux-x86_64-rhel70-7.0.12/bin/mongod --dbpath /path/to/your/db 

2. Server Package:

      mongodb-org-server-7.0.12-1.el7.x86_64.rpm

  • 内容: 这是一个 RPM 包,包含 MongoDB 服务器守护进程 mongod 及其相关的工具和配置文件。
  • 用途: 适用于通过包管理器(如 yumdnf)安装 MongoDB 服务器。该包提供了 MongoDB 的主要功能,如数据存储、索引管理和复制集。
  • 安装方法:
    • 使用 yum 安装:
      sudo yum install -y mongodb-org-server-7.0.12-1.el7.x86_64.rpm 
    • 安装完成后,可以通过 systemctl 启动和管理 mongod 服务:
      sudo systemctl start mongod sudo systemctl enable mongod 

3. Mongos Package:

     mongodb-org-mongos-7.0.12-1.el7.x86_64.rpm

  • 内容: 这是一个 RPM 包,包含 MongoDB 的 mongos 路由进程。
  • 用途: 专门用于分片集群环境。mongos 负责在分片集群中路由客户端请求,将查询请求分发到相应的 mongod 实例,并汇总结果返回给客户端。
  • 安装方法:
    • 使用 yum 安装:
      sudo yum install -y mongodb-org-mongos-7.0.12-1.el7.x86_64.rpm 

    • 配置 mongos 以连接到配置服务器(config servers)和分片(shards):
      mongos --configdb <config-replica-set-name>/<config-server-1>:<port>,<config-server-2>:<port>,<config-server-3>:<port>

二、mongodb数据迁移

(1)在Service控制台中右键属性,可以看到配置文件的路径:

(2)找到并打开配置文件,可以看到mongodb数据文件和日志文件的路径

压缩并上传到目标机器, 在目标机器中配置数据文件路径。

三、mongodb密码设置

1)启动mongodb命令

> cd d:\mongodb\bin

> d:\mongodb\bin>mongod -dbpath "d:\mongodb\data\db"

方式一:

mongod -dbpath "d:\mongodb\data\db"
本机用户名密码连接:
.\mongo.exe -u "root" -p “***3578" --host "127.0.0.1" --port 27017
.\mongo.exe -u "root" -p “***3578" --host "172.17.*.* --port 39017

方式二:

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

2)切换到mongo命令模式:

cd C:\Program Files\MongoDB\Server\3.4\bin

mongo

3)安装成windows服务

mongod --logpath "E:\5-data-center\1-mongodb-data\private-mongo-all\log\logs.txt" --logappend --dbpath "E:\5-data-center\1-mongodb-data\private-mongo-all\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

亿林服务器mongo地址:

"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --dbpath d:\mongodb\data\db --logpath d:\mongodb\data\log\MongoDB.log --service

已验证:

mongod --auth --port 27017 --logpath "D:\mongodb\private-mongo-all\log\logs.txt" --logappend --dbpath "D:\mongodb\private-mongo-all\data" --directoryperdb --serviceName "MongoDBAll" --serviceDisplayName "MongoDBAll" --install

4)常用命令

查看所有数据库: show dbs;

查询当前数据库名:db.getName();

切换到数据库:use CodeLab;

查看当前库所有表:show collections;

查询所有的用户;show users;

四、mongo命令行客户端建立连接

为mongodb配置环境变量。在系统变量中指向mongodb安装目录中的bin文件夹。

4.1 指定用户名密码

mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"

4.2 最简版本

mongo --port 27017

4.3 带端口

mongo -u "root" -p "Lfw******" --host "127.0.0.1" --port 29017
use admin
db.auth("admin", "lfw*******")

4.4 修改密码:

db.changeUserPassword("admin","lfw******")


4.5 删除单个用户:

db.dropUser("dba")

4.6 启动mongodb

  4.6.1 普通方式启动:

mongod --logpath "D:\database\private-mongo-all\log\logs.txt" --logappend --dbpath "d:\database\private-mongo-all\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

4.6.2 启动带访问控制的 Mongodb

远程连接的安全模式--auth;登录方式取决于启动方式。
mongod --auth --port 27827 --logpath "D:\database\private-mongo-all\log\logs.txt" --logappend  --dbpath "D:\database\private-mongo-all\data" --directoryperdb  --serviceName "MongoDBAll" --serviceDisplayName "MongoDBAll" --install

4.6.3 筛选字段

db.getCollection('FileLib').find({},{_id:1,FileName:1,FileType:1,FileSize:1})


        

五、安全性

5.1 mongodb有密码,且密码足够复杂

大小写字母、数字、特殊字符


5.2 端口不采用默认端口


5.3 用户管理

创建超级管理员
use admin
创建用户:
db.createUser({user:'root',pwd:'Lfw*****',roles:['userAdminAnyDatabase']})
删除用户:
db.dropUser("root")
注意:
密码中不能有#不能有@;否则mongocompass链接提示特殊字符,


 

5.4 mongocompass连接:

内网
mongodb://root:Lfw*****@localhost:29017/?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false
公网:
mongodb://root:Lfw****3578@127.0.0.1:29017/?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false


5.5 创建用户:

创建用户,同时授权数据权限给用户
use CodeLab;
db.createUser({
        user: "admin",
        pwd: "lfw1984abc@*#",
        roles:[{role: "userAdmin",db: "CodeLab"}]
    });

5.6 查看用户权限:

db.runCommand({
                usersInfo:"admin",
                showPrivileges:true
             })

5.7 用户授权

db.grantRolesToUser("root",
[{role:"readWrite", db:"CodeLab"},{role:"readWrite", db:"ExamQuestions"},{role:"readWrite", db:"Stephenson"},{role:"readWrite", db:"TreeInfoDB"},{role:"readWrite", db:"admin"},{role:"readWrite", db:"config"},{role:"readWrite", db:"local"}]
)


一、先切换到数据库
use admin;
db.auth("admin", "your_password");
二、授权
db.grantRolesToUser("admin",
[{ role: "readWriteAnyDatabase", db: "admin" },{ role: "userAdminAnyDatabase", db: "admin" },{ role: "dbAdminAnyDatabase", db: "admin" },{role:"readWrite", db:"CodeLab"},{role:"readWrite", db:"ExamQuestions"},{role:"readWrite", db:"Stephenson"},{role:"readWrite", db:"TreeInfoDB"},{role:"readWrite", db:"admin"},{role:"readWrite", db:"config"},{role:"readWrite", db:"local"}]
)


TODO:
MongoDB在每个数据库上都提供内置的数据库用户角色和数据库管理角色,但只在admin数据库中提供其它的内置角色。

5.8 无障碍模式配置,忘记密码可以使用此配置重置密码

禁用用户名密码
security:
    authorization: enabled/disabled
setParameter:
    authenticationMechanisms: SCRAM-SHA-1

六、其他问题

6.1 外网连不通服务器的问题

(1)防火墙入站出站规则。
(2)阿里云的安全组端口限定规则。

6.2 mongodb时区问题处理

读的对,存的错方案:
/// <summary>
/// 创建时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
//存读都对的方案:                                                   
DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐