db.auth()
定义
db.auth()
允许用户从 Shell 内对数据库进行身份验证。
提示
您可以将
passwordPrompt()
方法与各种用户身份验证管理方法和命令结合使用,以提示输入密码,而不是直接在方法或命令调用中指定密码。不过,您仍然可以像使用早期版本的mongo
shell 一样直接指定密码。如果您使用
db.auth(<username>, <password>)
语法并忽略密码,系统会提示用户输入密码。
兼容性
此方法可用于以下环境中托管的部署:
重要
MongoDB Atlas集群不支持此命令。 有关Atlas支持所有命令的信息,请参阅 不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
db.auth()
采用以下语法形式:
db.auth(<username>, <password>)
您可以执行以下任一操作:
省略密码以提示用户输入密码:
db.auth( <username> ) 使用
passwordPrompt()
提示用户输入密码:db.auth( <username>, passwordPrompt() ) 指定明文密码。
db.auth( <username>, <password> )
db.auth(<user document>)
db.auth( { user: <username>, pwd: passwordPrompt(), // Or "<cleartext password>" mechanism: <authentication mechanism>, digestPassword: <boolean> } )
Parameter | 类型 | 说明 |
---|---|---|
| 字符串 | 对该数据库具有访问特权的用户的名称。 |
| 字符串 | 用户的密码。该值可为以下任一项:
|
| 字符串 | 可选。要使用的 有关可用机制,请参阅 如果未指定,则使用 |
| 布尔 | 可选。确定所提供的密码在与指定的身份验证机制一起使用之前是否应进行预哈希处理。
默认值为 |
- 返回:
db.auth()
在身份验证不成功时返回0
,并在操作成功时返回1
。
行为
客户端断开连接
从 MongoDB 4.2 开始,如果在操作完成之前,发出 db.auth()
的客户端断开连接,MongoDB 将使用killOp
将 db.auth()
标记为终止。
例子
提示
您可以将 passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。不过,您仍然可以像使用早期版本的 mongo
shell 一样直接指定密码。
如果您使用 db.auth(<username>, <password>)
语法并忽略密码,系统会提示用户输入密码。
连接到 Shell 后进行身份验证
要在连接mongosh
后进行身份验证,请在用户的身份验证数据库中发出 db.auth()
:
use test db.auth( "myTestDBUser", passwordPrompt() )
您可以完全省略 password
值,以便提示用户输入密码:
use test db.auth( "myTestDBUser" )
从 MongoDB 5.0 开始,如果您的连接指定了 --apiStrict
选项,您可能无法使用 db.auth()
方法:
在同一数据库上以同一用户身份再次进行身份验证。
使用与之前在同一数据库上进行身份验证时不同的用户来进行身份验证。
先前在不同数据库上进行身份验证后,使用新数据库进行身份验证。
连接到 Shell 时进行身份验证
另外,也可以使用 mongosh
的命令行选项 --username
、--password
、--authenticationDatabase
和 --authenticationMechanism
在连接 mongosh
时指定身份验证凭证:
mongosh --username "myTestDBUser" --password --authenticationDatabase test --authenticationMechanism SCRAM-SHA-256