写点什么

MongoDB 设置用户名密码登录 (1),开源新作

作者:MySQL神话
  • 2021 年 11 月 27 日
  • 本文字数:1015 字

    阅读完需:约 3 分钟

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",

  7. roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

  8. }

  9. )


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


用户名: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. show collections


还有一点需要注意,如果 admin 库没有任何用户的话,即使在其他数据库中创建了用户,启用身份验证,默认的连接方式依然会有超级权限


2.4 内建角色

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。


最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友




**本文已被[CODING 开源项目:【一线大厂 Java 面试题解析+核心总结学习笔记+最新讲解视频+实战项目源


《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享


码】](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)收录**

用户头像

MySQL神话

关注

还未添加个人签名 2021.11.12 加入

还未添加个人简介

评论

发布
暂无评论
MongoDB 设置用户名密码登录(1),开源新作