0

我在具有相同配置的 64 位和 32 位 Linux 服务器上使用 mongodb,其中auth=true在两个配置文件中都设置了该选项。

虽然 64 位系统需要身份验证才能运行类似show usersor的命令show collections,但 32 位版本为您提供所有请求的信息,而无需db.auth()之前运行。

看起来,32 位版本忽略了auth=true配置文件中的选项。

那么:如何为在 32 位系统上运行的 mongodb 启用身份验证?

4

3 回答 3

2

32位版本应该支持认证就好了。但也有可能:

  • 它使用不同的配置文件(使用:-f /etc/mongodb.conf作为启动 MongoDB 时的选项)或者您可以--auth在命令行上指定
  • 因为数据库是空的并且根本没有设置用户,所以不需要身份验证。添加用户后,它将需要db.auth().
  • 您没有admin定义数据库上的用户。没有这个,你总是可以在 localhost 上连接。
于 2013-08-07T12:56:48.047 回答
0

关键是,身份验证被禁用,因为没有添加 db 用户,只有特定数据库的用户。使用 localhost 连接到该数据库会产生一个无“身份验证”的环境。(为此另请参阅@Derick 的答案,指出可能的原因。)

回到问题:

那么:如何为在 32 位系统上运行的 mongodb 启用身份验证?

关键是:身份验证处于活动状态,但不适用于来自本地主机的连接。要为来自 localhost 的连接启用身份验证,需要以下启动选项:

enableLocalhostAuthBypass=0
于 2013-08-08T10:35:54.730 回答
0

看完了,这个角色是必须的

db.createUser(
   {
user: "youloginname",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
于 2015-11-20T11:24:45.070 回答