#2 MongoDB 添加--auth 连接mongoose
2017-06-17 本文已影响2693人
JamesSawyer
1.设置用户并验证
初始设置可以参考这里 jiayi github mongodb
- 安装MongoDB(我的mongodb版本为
V3.4.4
) - 设置开启验证
--auth
使用这个flag - 给计算机默认的自带的
admin
设置一个帐号,相当于超级管理员 - 建立自定义数据库,设置用户帐号,并设置相应的权限
如果要使用mongoose连接mongodb则需要给数据库设置帐号密码和权限,首先我们需要添加用户
下面主要讲一下具体的命令:
# 1.进入mongo环境
> mongo
# 2.切换到 'admin' 数据库
> use admin
# 3.给admin设置用户
# user: 用户名
# pwd: 用户密码
# roles: 用来设置用户的权限,比如读,读写,写等等
> db.createUser({user: 'root', pwd: '123456', roles: ['root']})
# 4.验证该用户 'db.auth(用户名,用户密码)'
> db.auth('root', '123456')
# 如果返回 '1'表示验证成功, 如果是 '0' 表示验证失败
# 5.自定义数据库,并添加用户
# a.创建 'example' 数据库
> use example
# b.创建用户
> db.createUser({user: 'james', pwd: '123456', roles: [{role: 'readWrite'}]})
# c.验证该用户
> db.auth('james', '123456')
# 如果返回 '1'表示验证成功, 如果是 '0' 表示验证失败
主要使用到的方法:
db.createUser()
db.auth()
另外删除用户可以使用:
db.dropUser(用户名)
给用户设置具体的操作权限 roles
有 (这个的设置对数据的操作权限影响很大,我暂时还不是很清楚,有待了解):
注意
如果修改了用户权限,则需要在用户所在的数据库再次认证才能生效:
# 比如将上面 'example' 数据库下的用户 'james' 的权限修改
{
"_id" : "example.james",
"user" : "james",
"db" : "example",
"roles" : [
{
"role" : "readWrite", // 读写
"db" : "example"
}
]
}
# 修改为只读的
{
"_id" : "example.james",
"user" : "james",
"db" : "example",
"roles" : [
{
"role" : "read", // 只读
"db" : "example"
}
]
}
# 再次认证
> mongo
> use example
> db.auth('james', '123456')
# 如果返回 '1'表示验证成功, 如果是 '0' 表示验证失败
使用Robomongo连接
- 创建
- 点击验证,开启验证-> 输入帐号和密码(管理员用户的帐号和密码,比如上面的用户名
root
, 明码123456
) -> 点击 'test',查看是否通过验证
使用mongose连接数据库
一般node项目连接 mongodb都会选择 mongose,下面是初步的连接教程
1.下载npm包
npm i -S express mongose
2.具体代码:
// app.js
var express = require('express');
var app = express()
var mongose = require('mongose');
# mongodb 为协议
# james: 连接数据库的用户
# 123456: 该用户的密码
# localhost: 本地的地址(因为这是本地环境)
# 27017: mongodb的端口号(这个一般是默认值,也可以进行修改)
# example: 数据库的名字
var db = 'mongodb://james:123456@localhost:27017/example'
// 连接
mongose.connect(db);
var connection = mongose.connection;
connection.on('connected', function() {
console.log('Mongoose 连接到 example数据库');
})
connection.once('open', function(callback){
console.log('数据库启动了');
// app.listen(8080, () => console.log('Express server listening on port 8080'));
})
使用 node app
运行js,成功连接则会输出上面打印的信息。
总结
大致的连接过程就是这些,设置的时候时候,如果查看教程请注意mongodb版本号。