MongoDB基本用法+连接Express服务器端

MongoDB基本用法+连接Express服务器端

摘要:
简要记录了MongoDB数据库的常用命令+MongoDB数据库安全+Express服务端连接的要点

MongoDB常用命令

详情可参考MongoDB官方手册

  • Service:
net start MongoDB / net stop MongoDB
  • console ev:
mongo #进入mongodb的命令解析器
show dbs #显示数据库列表
show users #显示用户
show collections #显示当前数据库中的集合(类似关系数据库中的表)

use #切换当前数据库(如果不存在则创建新的)

db.help() #显示数据库操作命令
db.foo.help() #foo为当前数据库下的集合
db.foo.find()
db.foo.find({a:1}) #在集合foo中查找键值为a和1的数据

db.dropDatabase() #删除当前使用的数据库
db.cloneDatabase(127.0.0.1) #克隆指定机器上的数据库的数据到当前数据库
db.copyDatabase(“mydb”, “temp”,127.0.0.1) #将本机的mydb的数据拷贝到temp数据库中
db.getName() #查看当前使用的数据库 等同于db
db.stats() #显示当前db状态
db.serverStatus() #查看数据库服务器状态

MongoDB安全

主要从两个方面保护数据库:禁止外网通过数据库端口访问数据;启用数据库安全认证。

禁止公网访问MongoDB端口

  1. 路由器关闭端口转发
  2. 防火墙iptables禁止访问

启用数据库安全认证

MongoDB安装好后默认不启用安全认证,所以用户只要能连上服务器就能连接到mongoDB。mongoDB提供admin数据库,可用来管理所有数据库的信息,因此首先要为admin数据库创建一个超级用户,否则没有用户的认证是没有意义的。

  1. 进入mongo shell
use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

Note: readWriteAnyDatabase option用来赋予读写其他数据库的权限,没有的话,该用户无法操作其他数据库

  1. 关闭数据库服务
net stop MongoDB #关闭数据库服务
  1. 安全授权
    打开mongod.cfg,在“#security:”下添加:
security:
  authorization: enabled
  1. 重启服务器
net start MongoDB #重新启用数据库服务

此时use admin或use test, show users 或 show collections发现无法访问了。

  1. 认证访问
use admin
db.auth("myUserAdmin","abc123")

返回1表示成功。

  1. 为自定义数据库创建普通用户
    服务器一般只连接MongoDB中的某些数据库,所以较为安全的做法是为需要连接的数据库创建普通用户,只给予read and write权限。创建过程类似创建管理员用户:
use foo
db.createUser(
  {
    user: "simpleUser",
    pwd: "simplePass",
    roles: [ { role: "readWrite", db: "foo" }]
  }
)

使用时,首先切换到use foo, 然后db.auth(“simpleUser”, “simplePass”)

Server端连接

nodeJS环境使用mongoose package连接数据库,一般采用connect方法连接,但因为该方法不能监听数据库连接状态,因此常搭配mongoDB的connection实例使用。

const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/foo", {
  useFindAndModify: false,
  useNewUrlParser: true,
  user: "simpleUser",
  pass: "simplePass"
});
const conn = mongoose.connection;
conn.on("connected", function(err) {
  if (err) {
    console.log("Cannot connect database! err: " + err);
  } else {
    console.log("Mongodb run successfully!");
  }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值