mongodb- 管理

本文介绍MongoDB的配置方法,包括通过外部配置文件设置端口、路径等,并详细讲解了如何进行用户认证、权限管理及服务端的安全启动。此外,还介绍了备份与恢复的过程以及常用的监控命令。

配置文件(外部配文件置):

mongod --config D:\mongodb\mongodb.config

mongodb.config文件内容:

port = 20000
dbpath = D:/mongodb/dbs
logpath = D:/mongodb/logs.log
logappend = true

正确停止MongoDB:

mongo -port 20000
use admin
db.shutdownServer();

安全认证:

1.添加用户

db.addUser(username, password,[ readOnly=false])

[ readOnly=false]参数可选,如果为true,用户只有查询权限。

admin数据库下面添加的用户 被视为超级用户(管理员)。

2.用户认证
db.auth(username, password)

3.重启服务端,加入 --auth命令选项 开启安全检查

mongod --dbpath D:/mongodb/db --port 20000 --logpath = D:/mongodb/logs.log --logappend --auth

例子:

1.添加一个超级用户:

a.添加用户

>mongo -port 20000
> use admin
switched to db admin
> db.addUser("admin","admin123");
{ "n" : 0, "connectionId" : 4, "err" : null, "ok" : 1 }
{
"user" : "admin",
"readOnly" : false,
"pwd" : "6f09f2f35e3a5e225af66fe3868e4fb7",
"_id" : ObjectId("50114eb027e4ae802c6bda45")
}
>

b.认证用户

> use admin
switched to db admin
> db.auth("admin","admin123");
1

c.重启服务端 加入--auth参数

登录后不能正常查询

>mongo --port 20000 test
MongoDB shell version: 2.0.4
connecting to: 127.0.0.1:20000/test
> db.test.find();
error: {
"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",
"code" : 10057
}
>

d.使用用户名 密码登录

>mongo --port 20000 admin -u admin -p
MongoDB shell version: 2.0.4
Enter password:
connecting to: 127.0.0.1:20000/admin
> use test
switched to db test
> db.test.find();
>

2.添加一个普通用户

> use test
switched to db test
> db.addUser("abc","abc123");
{ "n" : 0, "connectionId" : 9, "err" : null, "ok" : 1 }
{
"user" : "abc",
"readOnly" : false,
"pwd" : "30fc2d5cc077f71cc81d3c82afc9d361",
"_id" : ObjectId("501157ed1d2319c203e2e8d3")
}

认证:

> db.auth("abc","abc123");
1

用户名 密码登录

mongo --port 20000 test -u abc -p
MongoDB shell version: 2.0.4
Enter password:
connecting to: 127.0.0.1:20000/test
> db.test.find();

查询用户

db.system.users.find()

删除用户:

db.system.users.remove({user:"admin"});

限制ip访问:

使用--bindip 参数, 只能被--bindip参数指定的ip地址访问.

如:mongod --bindip localhost

数据文件备份:

>mongodump -port 20000 -d test -u admin -p-d test

备份的数据库名称会在当前目录下创建一个dump目录,用于存放备份出来的文件,当然也可以(-o)指定备份存放的目录。

mongodump -port 20000 -d test -o c:/ -u admin -p

mongodump --help 查看其他选项

数据恢复:

>mongorestore -port 20000 -d test --directoryperdb c:/test/ --drop -u admin -p

--directoryperdb指定备份的目录

--drop 恢复的时候先删除

例:

a,先删除test数据库

> use test;
switched to db test
> db.dropDatabase();
{ "dropped" : "test", "ok" : 1 }
> show dbs;
admin 0.03125GB
local (empty)

b.恢复

mongorestore -port 20000 -d test --directoryperdb c:/test/ --drop -u admin -p

监控:

1.serverStatus命令

use admin
db.serverStatus();

db.serverStatus();
{
"host" : "admin:20000",
"version" : "2.0.4",
"process" : "mongod",
"uptime" : 16,
"uptimeEstimate" : 14,
"localTime" : ISODate("2012-07-26T13:26:38.375Z"),
"globalLock" : {
"totalTime" : 15421875,
"lockTime" : 0,
"ratio" : 0,
"currentQueue" : {
"total" : 0,
"readers" : 0,
"writers" : 0
},
"activeClients" : {
"total" : 0,
"readers" : 0,
"writers" : 0
}
},
"mem" : {
"bits" : 32,
"resident" : 15,
"virtual" : 57,
"supported" : true,
"mapped" : 0
},
"connections" : {
"current" : 1,
"available" : 19999
},
"extra_info" : {
"note" : "fields vary by platform",
"page_faults" : 4032,
"usagePageFileMB" : 19,
"totalPageFileMB" : 3871,
"availPageFileMB" : 2878,
"ramMB" : 1977
},
"indexCounters" : {
"note" : "not supported on this platform"
},
"backgroundFlushing" : {
"flushes" : 0,
"total_ms" : 0,
"average_ms" : 0,
"last_ms" : 0,
"last_finished" : ISODate("1970-01-01T00:00:00Z")
},
"cursors" : {
"totalOpen" : 0,
"clientCursors_size" : 0,
"timedOut" : 0
},
"network" : {
"bytesIn" : 220,
"bytesOut" : 261,
"numRequests" : 3
},
"opcounters" : {
"insert" : 0,
"query" : 1,
"update" : 0,
"delete" : 0,
"getmore" : 0,
"command" : 4
},
"asserts" : {
"regular" : 0,
"warning" : 0,
"msg" : 0,
"user" : 0,
"rollovers" : 0
},
"writeBacksQueued" : false,
"ok" : 1

返回字段说明:

uptime: 服务器运行时间(秒)。

localTime: 服务器本地时间。

mem: 服务器内存隐身了多少数据,服务器进程的虚拟内存和常驻内存占用情况(单位:MB)。

connections: 当前连接数。

opcounters: 操作统计。

globalLock:表示全局写入锁占用的服务器时间(单位:微妙) ;

backgroundFlushing: 表示后台做了多少次fsync以及用了多少时间。

asserts:统计断言的次数。

2.mongostat.exe

bin目录下。

[root@yfw Rocket.Chat]# repoquery -l mongodb-org | grep bin Last metadata expiration check: 1:09:09 ago on Mon 10 Nov 2025 05:31:18 AM CST. Package mongodb-org-3.6.17-1.el8.x86_64 contains no files Package mongodb-org-3.6.18-1.el8.x86_64 contains no files Package mongodb-org-3.6.19-1.el8.x86_64 contains no files Package mongodb-org-3.6.20-1.el8.x86_64 contains no files Package mongodb-org-3.6.21-1.el8.x86_64 contains no files Package mongodb-org-3.6.22-1.el8.x86_64 contains no files Package mongodb-org-3.6.23-1.el8.x86_64 contains no files Package mongodb-org-3.6.0-1.el7.x86_64 contains no files Package mongodb-org-3.6.1-1.el7.x86_64 contains no files Package mongodb-org-3.6.10-1.el7.x86_64 contains no files Package mongodb-org-3.6.11-1.el7.x86_64 contains no files Package mongodb-org-3.6.12-1.el7.x86_64 contains no files Package mongodb-org-3.6.13-1.el7.x86_64 contains no files Package mongodb-org-3.6.14-1.el7.x86_64 contains no files Package mongodb-org-3.6.15-1.el7.x86_64 contains no files Package mongodb-org-3.6.16-1.el7.x86_64 contains no files Package mongodb-org-3.6.17-1.el7.x86_64 contains no files Package mongodb-org-3.6.18-1.el7.x86_64 contains no files Package mongodb-org-3.6.19-1.el7.x86_64 contains no files Package mongodb-org-3.6.2-1.el7.x86_64 contains no files Package mongodb-org-3.6.20-1.el7.x86_64 contains no files Package mongodb-org-3.6.21-1.el7.x86_64 contains no files Package mongodb-org-3.6.22-1.el7.x86_64 contains no files Package mongodb-org-3.6.23-1.el7.x86_64 contains no files Package mongodb-org-3.6.3-1.el7.x86_64 contains no files Package mongodb-org-3.6.4-1.el7.x86_64 contains no files Package mongodb-org-3.6.5-1.el7.x86_64 contains no files Package mongodb-org-3.6.6-1.el7.x86_64 contains no files Package mongodb-org-3.6.7-1.el7.x86_64 contains no files Package mongodb-org-3.6.8-1.el7.x86_64 contains no files Package mongodb-org-3.6.9-1.el7.x86_64 contains no files [root@yfw Rocket.Chat]#
11-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值