JAVA全系列 教程
3762个小节阅读:7094.9k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
MongoDB 服务端开启安全检查之前,至少需要有一个管理员账号,admin 数据库中的用户都被视为管理员如果 admin 库没有任何用户的话,即使在其他数据库中创建了用户,启用身份验证,默认的连接方式依然会有超级权限,即仍然可以不验证账号密码照样能进行 CRUD,安全认证相当于无效。
xxxxxxxxxx
>use admin
switched to db admin
> db
admin
> db.createUser(
... {
... user:"root",
... pwd:"123456",
... roles:[{role:"root",db:"admin"}]
... })
创建普通用户
创建 mydb数据库并创建两个用户,zhangsan 拥有读写权限,lisi 拥有只读权限测试这两个账户的权限。以超级管理员登录测试权限。
xxxxxxxxxx
> use mydb
switched to db mydb
> db.c1.insert({name:"testdb1"})
WriteResult({ "nInserted" : 1 })
> db.c2.insert({name:"testdb1"})
WriteResult({ "nInserted" : 1 })
> show tables
c1
c2
> db.c1.find()
{ "_id" : ObjectId("62a00e5c1eb2c6ab85dd5eec"), "name" : "testdb1" }
> db.c1.find({})
{ "_id" : ObjectId("62a00e5c1eb2c6ab85dd5eec"), "name" : "testdb1" }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
mydb 0.001GB
>
如下图所示,为 mydb数据库创建了两个用户,zhangsan 拥有读写权限,lisi 拥有只读权限,密码都是 123456。
xxxxxxxxxx
use mydb
switched to db mydb
> db
mydb
> db.createUser({
... user:"zhangsan",
... pwd:"123456",
... roles:[{role:"readWrite",db:"mydb"}]
... })
> db.createUser({
... user:"lisi",
... pwd:"123456",
... roles:[{role:"read",db:"mydb"}]
... })
普通用户现在仍然像以前一样进行登录,如下所示直接登录进入 mydb数据库中,登录是成功的,只是登录后日志少了很多东西,而且执行 show dbs 命令,以及 show tables 等命令都是失败的,即使没有被安全认证的数据库,用户同样操作不了,这都是因为权限不足,一句话:用户只能在自己权限范围内的数据库中进行操作。
xxxxxxxxxx
> db.auth("zhangsan","123456")
1
> show dbs
mydb 0.001GB
> show tables
c1
c2
客户端管理员以root用户登录,安全认证通过后,拥有对所有数据库的所有权限
xxxxxxxxxx
> use admin
switched to db admin
> db.auth("root","123456")
1
> show dbs
...
1.以安全认证方式运行MongoDB下列说法错误的是?
A 需要在admin库中添加用户
B 需要在mongod.conf配置文件中设置auth=true
C 如果是docker启动需要在docker run命令后添加参数--auth
D 必须在admin库中创建root角色用户
答案
1=>D
2.MongoDB查看所有创建的用户命令是?
A db.getUsers()
B db.findAllUsers()
C db.system.uses.find().pretty()
D use admin
答案
2=>C