MongoDB 设置用户名密码登录 (1),开源新作
1.2 验证端口能否访问方式
在外网机器命令行中运行
telnet your.machine.open.ip 27017
2. 启用验证
2.1 创建用户管理员账户
当前数据库版本:Mongodb 3.4
使用 mongod 启动数据库
新建终端
mongod --port 27017 --dbpath /data/db1
参数默认可以不加,若有自定义参数,才要加上,下同。
另起一个终端,运行下列命令
mongo --port 27017
use admin
db.createUser(
{
user: "adminUser",
pwd: "adminPass",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
管理员创建成功,现在拥有了用户管理员
用户名: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"
第二种
客户端连接后,再进行验证
mongo --port 27017
use admin
db.auth("adminUser", "adminPass")
// 输出 1 表示验证成功
2.3 创建普通用户
过程类似创建管理员账户,只是 role 有所不同
use foo
db.createUser(
{
user: "simpleUser",
pwd: "simplePass",
roles: [ { role: "readWrite", db: "foo" },
{ role: "read", db: "bar" } ]
}
)
现在我们有了一个普通用户
用户名:simpleUser
密码:simplePass
权限:读写数据库 foo, 只读数据库 bar。
注意
NOTE
WARN
use foo 表示用户在 foo 库中创建,就一定要 foo 库验证身份,即用户的信息跟随随数据库。比如上述 simpleUser 虽然有 bar 库的读取权限,但是一定要先在 foo 库进行身份验证,直接访问会提示验证失败。
use foo
db.auth("simpleUser", "simplePass")
use bar
show collections
还有一点需要注意,如果 admin 库没有任何用户的话,即使在其他数据库中创建了用户,启用身份验证,默认的连接方式依然会有超级权限
2.4 内建角色
总结
总的来说,面试是有套路的,一面基础,二面架构,三面个人。
最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友


**本文已被[CODING 开源项目:【一线大厂 Java 面试题解析+核心总结学习笔记+最新讲解视频+实战项目源
《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
评论