# 配置认证
# 一.配置用户
# 1.启用、关闭认证
vim /etc/mongod.conf
1
#注释这两句 => 关闭认证
#security:
# authorization: enabled
1
2
3
2
3
# 打开这两句 => 启用认证
security:
authorization: enabled
1
2
3
2
3
# 2.远程、本地登录
vim /etc/mongdo.conf
1
bindIp 127.0.0.1 => 直接 mongo --port 27017 -u [USERNAME] -p [PASSWORD] ... 可进入 mongo shell
bindIp 192.168.130.10p => 需要加--host mongo --port 27017 -u [USERNAME] -p [PASSWORD] --host 81.71.127.69 ...
1
2
3
2
3
# 3.创建用户
- a.系统管理员
use admin
db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
db.createUser({user: "admin", pwd: "123456", roles:[{role: "userAdminAnyDatabase", db: "admin"}]})
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- b.普通管理员
db.createUser(
{
user: "myself",
pwd: "123456",
roles: [ { role: "readWrite", db: "test" } ]
}
)
db.createUser({user: "myself", pwd: "123456", roles: [{role: "readWrite", db: "test"}]})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- c.创建游客
db.createUser(
{
user: "myselfGuest",
pwd: "123456",
roles: [ { role: "read", db: "test" } ]
}
)
db.createUser({user: "myselfGuest", pwd: "123456", roles: [{role: "read", db: "test"}]})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 二.测试登录
# 1.配置 MONGODB 配置文件
vim /etc/mongod.conf
1
bindIp 81.71.127.69
1
解释:bindIp 改成所在机器 ip 地址 ,目的为了其他机器能够登录
# 2.启动
service mongod start
或者
service mongod restart
1
2
3
2
3
解释:配置文件修改,必须用 mongod 重启服务,只有 mongod 服务会读取配置文件
# 3.登录
//形如:mongo --port [端口] -u [用户名] -p [密码] --authenticationDatabase [数据库名] --host [ip 地址]
mongo --port 27017 -u 'admin' -p '123456' --authenticationDatabase 'admin' --host 81.71.127.69
1
2
2
解释:admin 是超级管理员,可登录 109 机器的 admin 库
# 三.混淆名词解释
mongo——与 MongoDB 交互的 javascript shell 接口。用来为管理人员提供强大的 DB 管理接口,给开发人员直接去查询、操作数据库的方案。 mongod——与 MongoDB 交互的一个进程。用来处理数据请求,管理数据访问,执行后台的管理操作。
# 四.新数据库设置
# 1.远程登录到 MONGODB 所在服务器
ssh root@81.71.127.69
1
# 2.确保配置文件 IP 修改为本机实际 IP
vi /etc/mongod.conf
bindIp 81.71.127.69
1
2
2
解释:修改 bindIp 的值。如果没改过的话,原值是 127.0.0.1 本例演示的是远程登录 81.71.127.69 这台机器的 mongoDB
# 3.管理员远程登录服务器
mongo --port 27017 -u 'admin' -p '123456' --authenticationDatabase 'admin' --host 81.71.127.69
1
解释:使用管理员账号 admin 密码为 123456 的账号,登录主机是 81.71.127.69 端口是 27017 的 mongoDB
# 4.创建新的数据库
use monitorService
1
解释:创建一个新的数据库,数据库名称是 monitorService
# 5.为新数据库创建用户
db.createUser({user: "admin", pwd: "123456", roles: [ { role: "readWrite", db:"monitorService"}]})
1
解释:创建一个名称为 admin 密码为 123456 的用户,该用户可以读写数据库 monitorService, 这里的 admin 是一个标准的开发用户
# 6.启用 MONGOBOOST 或 ROBOT3T 等客户端测试连接
新数据库设置成功!
# 拓展——NODE 中 MONGO 连接格式
var conn= mongoose.createConnection('mongodb://myself:123456@81.71.127.69:27017/monitorService', function (err) {
if (err) {
console.error('connect to %s error: ', config.db, err.message);
process.exit(1);
}
});
1
2
3
4
5
6
2
3
4
5
6
# 五.管理员密码重置
# 1.关闭认证
vi /etc/mongod.conf
// 注释以下两句代码至如下
# security:
# authorization: enabled
1
2
3
4
5
2
3
4
5
解释:注释认证语句,关闭 mongo 认证功能。注意:两句都要注释,亲测只注释第二句,重启 mongo 服务会不成功
# 2.重启服务
service mongod restart
1
解释:重启以生效配置文件改动的配置。如果上面只注释一句,会导致启动不成功
# 3.登录 MONGO
mongo
1
解释:此处/etc/mongod.conf 中 bindIp 的值为 127.0.0.1,同时关闭了认证,所以可以省去参数直接登入 mongo shell
# 4.修改用户信息
use admin // 切换到 admin 库
db.system.users.find() // 查看系统用户表
db.system.users.remove({}) // 删除所有用户 也可以只删除 admin
db.createUser({user: "admin", pwd: "123456", roles:[{role: "userAdminAnyDatabase", db: "admin"}]}) // 重置管理员用户名密码 参考本文【模块一:配置登录】
1
2
3
4
2
3
4
# 5.重新打开配置文件的认证
vi /etc/mongod.conf
//取消注释认证如下
security:
uthorization: enabled
1
2
3
4
5
2
3
4
5
解释:重新启用认证
# 6.重启生效
service mongod restart
1
# 连接 node
mongoose.connect(name, {
authSource: "admin", // 权限认证(添加这个属性!!!!!)
user: user,
pass: password,
poolSize: 10, // 数据库连接池大小
useNewUrlParser: true, // 虽然没有报错但是看起来还是不爽,警告内容就是新版connect里边需要这两个参数
useUnifiedTopology: true, // 当前服务器发现和监视引擎已弃用
});
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8