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 的所有组件,包括
mongod、mongos、客户端工具(如mongoshell)、以及相关的库和头文件。 - 用途: 适用于手动安装 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及其相关的工具和配置文件。 - 用途: 适用于通过包管理器(如
yum或dnf)安装 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)
更多推荐
所有评论(0)