MongoDB 设置用户名密码登录(1)

  • 数据库被清空

  • 数据库运行缓慢

解决方案

1. 禁止公网访问 Mongodb 端口

1.1 网络配置

由于网络配置因人而异,需要根据自己实际环境进行配置,不作冗述。大致可以从以下方面禁止。

  • 在路由器中关闭端口转发

  • 防火墙 iptables 禁止访问

1.2 验证端口能否访问方式

在外网机器命令行中运行

  1. telnet your.machine.open.ip 27017

2. 启用验证

2.1 创建用户管理员账户

当前数据库版本:Mongodb 3.4

使用 mongod 启动数据库

新建终端

mongod --port 27017 --dbpath /data/db1

参数默认可以不加,若有自定义参数,才要加上,下同。

另起一个终端,运行下列命令

  1. mongo --port 27017

  2. use admin

  3. db.createUser(

  4. {

  5. user: “adminUser”,

  6. pwd: “adminPass”,

roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]

  1. }

  2. )

管理员创建成功,现在拥有了用户管理员

用户名:lyl

密码:123456

然后,断开 mongodb 连接, 关闭数据库

两个终端下 <C - c>

2.2 Mongodb 用户验证登陆

启动带访问控制的 Mongodb

新建终端

mongod --auth --port 27017 --dbpath /data/db1

现在有两种方式进行用户身份的验证

第一种 (类似 MySql)

客户端连接时,指定用户名,密码,db名称

mongo --port 27017 -u “lyl” -p “123456” --authenticationDatabase “admin”

第二种

客户端连接后,再进行验证

  1. mongo --port 27017

  2. use admin

  3. db.auth(“adminUser”, “adminPass”)

  4. // 输出 1 表示验证成功

2.3 创建普通用户

过程类似创建管理员账户,只是 role 有所不同

  1. use foo

  2. db.createUser(

  3. {

  4. user: “simpleUser”,

  5. pwd: “simplePass”,

  6. roles: [ { role: “readWrite”, db: “foo” },

  7. { role: “read”, db: “bar” } ]

  8. }

  9. )

现在我们有了一个普通用户

用户名:simpleUser

密码:simplePass

权限:读写数据库 foo, 只读数据库 bar。

注意

NOTE

WARN

use foo表示用户在 foo 库中创建,就一定要 foo 库验证身份,即用户的信息跟随随数据库。比如上述 simpleUser 虽然有 bar 库的读取权限,但是一定要先在 foo 库进行身份验证,直接访问会提示验证失败。

  1. use foo

  2. db.auth(“simpleUser”, “simplePass”)

  3. use bar

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值