环境:ubuntu

创建用户

1
2
3
4
5
6
7
8
9
10
11
# 选择admin数据库
use admin

# 插入数据
db.createUser({
user: USERNAME,
pwd: PASSWORD,
roles: [
{role: ROLE, db: DBNAME} # DBNAME是希望授予权限的数据库
]
})

role代表用户权限,常用的几个:

字段 描述
read 可读当前数据库
readAnyDatabase 可以读所有数据库
readWrite 可以读写当前数据库

更详细的在官方文档

修改配置信息

打开/etc/mongodb.conf,我修改的配置如下

1
2
3
bind_ip = 127.0.0.1 # 限制为本地访问
port = 50107 # 修改默认端口
auth = true # 要求登录验证

访问

首先关闭mongodb服务再从配置文件启动

1
2
3
service mongodb stop # 关闭

nohup mongod --config /etc/mongod.config # nohup表示后台启动

再登录mongodb:

1
mongo 127.0.0.1:启动端口号

现在输入show dbs会出现错误,错误信息类似not authorized on admin to execute command
正确流程:

1
2
3
4
5
6
# 先选择admin数据库
use admin
# 再登录
db.auth("USERNAME","PASSWORD")
# 在选择有权限的数据库
use DBNAME

node连接

1
2
3
4
var MongoClient = require('mongodb').MongoClient
// 这里的authSources表示验证需要依赖的数据库名称
// 参考https://blog.csdn.net/szu_lzz/article/details/77435804
var url = 'mongodb://用户名:密码@localhost:端口/数据库名称?authSource=admin'