首次安装mongodb时,没有root用户。您只需以“ mongod --dbpath ='/ usr / local / var / mongodb'”(如果在mac osx上)启动mongo,然后在shell中运行mongo,它将无需任何身份验证即可连接您。
我在admin数据库中创建admin用户:
> db
admin
> db.createUser({
"user" : "test1",
"pwd" : "test1",
"roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ]
})
> db.getUsers()
[
{
"_id" : "admin.test1",
"user" : "test1",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
现在,我以管理员用户身份连接到mongo shell:
> db
admin
> db.runCommand({connectionStatus : 1})
{
"authInfo" : {
"authenticatedUsers" : [
{
"user" : "test1",
"db" : "admin"
}
],
"authenticatedUserRoles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
},
"ok" : 1
}
我使用访问控制启动mongod:
$ sudo mongod --auth --port 27017 --dbpath=.
Password:
2020-04-16T20:28:40.656-0400 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2020-04-16T20:28:40.672-0400 I CONTROL [initandlisten] MongoDB starting : pid=8441 port=27017 dbpath=. 64-bit
我什至启用了安全性
$ cd /usr/local/etc/
$ vim mongod.conf
security:
authorization: "enabled"
但是我只能使用“ mongo”登录:
$ mongo admin
MongoDB shell version v4.0.4
connecting to: mongodb://127.0.0.1:27017/admin
Implicit session: session { "id" : UUID("95879725-00ed-4cee-bd43-8ba093df1e19") }
MongoDB server version: 4.0.4
> db.runCommand({connectionStatus : 1})
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
这很疯狂。我还必须做什么?除非登录到ip时出现某种类型的自动登录,否则服务器正在运行?
答案 0 :(得分:0)
某些命令不需要身份验证。尝试读取或写入集合。
认证本身是通过一系列命令执行的(您可以阅读有关here的信息),因此某些命令必须不一定需要认证。
某些命令根据连接是否经过身份验证返回不同的响应。例如,尝试使用{ismaster:1}
进行身份验证和不进行身份验证。