Geo*_*off 6 authentication mongodb
我的问题是关于 mongo shell --authenticationDatabase 选项。
我对此感到困惑,因为我认为我创建用户的数据库是管理数据库,因为这是在阅读本文档后实际定义用户的地方: https: //docs.mongodb.com/manual/core /安全用户/#用户管理界面
我明白我错了;身份验证数据库是用户拥有角色的数据库。我的问题是选项“--authenticationDatabase”的目的是什么?请参阅下面我的场景。
下面的命令将连接到 myapp 数据库并针对 myapp 数据库进行身份验证
mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myapp
Run Code Online (Sandbox Code Playgroud)
默认情况下,以下命令将连接到 myapp 数据库并针对 myapp 数据库进行身份验证。这似乎使上面的命令变得过时。
mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myapp
Run Code Online (Sandbox Code Playgroud)
下面的命令将针对 myapp 数据库进行身份验证,但不会连接到它。为什么?仅仅是为了测试凭据吗?
mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp"
Run Code Online (Sandbox Code Playgroud)
该命令会告诉我“错误:身份验证失败。” 所以我仍然想知道为什么我需要前面的命令来找出我的凭据无效。
mongo -u "bob" -p "bobspassword" myapp
Run Code Online (Sandbox Code Playgroud)
最后,是否存在一种情况,我需要对一个数据库进行身份验证并连接到另一个数据库,如下面的命令?我只能连接到已定义角色的数据库,那么为什么我不针对我尝试连接的数据库进行身份验证呢?
mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myotherapp
Run Code Online (Sandbox Code Playgroud)
感谢您的见解!
在 mongo 中,您连接到服务器而不是真正的数据库。之后您可以更改数据库。
你的代码:
mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp"
Run Code Online (Sandbox Code Playgroud)
test将连接到 mongod 服务器,如果其他未定义,它将使用“ ”数据库
下一个应该可以工作,因为 mongo 从连接字符串中获取身份验证数据库。此外,它可能在配置文件中设置不同。
mongo -u "bob" -p "bobspassword" myapp
Run Code Online (Sandbox Code Playgroud)
最后:
最后,是否存在一种情况,我需要对一个数据库进行身份验证并连接到另一个数据库。
不
| 归档时间: |
|
| 查看次数: |
12892 次 |
| 最近记录: |