我在具有相同配置的 64 位和 32 位 Linux 服务器上使用 mongodb,其中auth=true
在两个配置文件中都设置了该选项。
虽然 64 位系统需要身份验证才能运行类似show users
or的命令show collections
,但 32 位版本为您提供所有请求的信息,而无需db.auth()
之前运行。
看起来,32 位版本忽略了auth=true
配置文件中的选项。
那么:如何为在 32 位系统上运行的 mongodb 启用身份验证?
我在具有相同配置的 64 位和 32 位 Linux 服务器上使用 mongodb,其中auth=true
在两个配置文件中都设置了该选项。
虽然 64 位系统需要身份验证才能运行类似show users
or的命令show collections
,但 32 位版本为您提供所有请求的信息,而无需db.auth()
之前运行。
看起来,32 位版本忽略了auth=true
配置文件中的选项。
那么:如何为在 32 位系统上运行的 mongodb 启用身份验证?
32位版本应该支持认证就好了。但也有可能:
-f /etc/mongodb.conf
作为启动 MongoDB 时的选项)或者您可以--auth
在命令行上指定db.auth()
.admin
定义数据库上的用户。没有这个,你总是可以在 localhost 上连接。关键是,身份验证被禁用,因为没有添加 db 用户,只有特定数据库的用户。使用 localhost 连接到该数据库会产生一个无“身份验证”的环境。(为此另请参阅@Derick 的答案,指出可能的原因。)
回到问题:
那么:如何为在 32 位系统上运行的 mongodb 启用身份验证?
关键是:身份验证处于活动状态,但不适用于来自本地主机的连接。要为来自 localhost 的连接启用身份验证,需要以下启动选项:
enableLocalhostAuthBypass=0
看完了,这个角色是必须的
db.createUser(
{
user: "youloginname",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)