You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MongoDB认证启用与禁用问题:本地实例开启认证操作求助

配置MongoDB访问控制的完整步骤

嘿,你已经迈出了配置MongoDB访问控制的第一步啦,我来帮你把剩下的步骤理清楚,确保你能顺利开启认证:

1. 完成管理员用户创建(如果还未完成)

你已经切换到了admin数据库,接下来需要完整执行创建管理员用户的命令。推荐创建一个拥有最高权限的root用户,方便后续管理:

use admin
db.createUser(
  {
    user: "admin_account", // 替换成你想要的管理员用户名
    pwd: "StrongPassword123!", // 一定要设置强密码
    roles: [ { role: "root", db: "admin" } ] // root角色拥有所有数据库的最高权限
  }
)

执行成功后会返回类似Successfully added user: { "user" : "admin_account", "roles" : [ { "role" : "root", "db" : "admin" } ] }的提示。

2. 关闭当前MongoDB实例

  • 如果是通过命令行直接启动的MongoDB,直接按Ctrl+C终止进程即可。
  • 如果是作为Windows服务运行的,打开命令提示符执行:
net stop MongoDB

(注:如果你的服务名不是MongoDB,替换成实际的服务名称)

3. 开启认证模式重启MongoDB

有两种方式可以开启认证,选适合你的一种:

方式一:命令行启动(临时/无配置文件场景)

先进入MongoDB的bin目录:

cd c:\mongodb\bin

然后启动mongod时加上--auth参数,同时指定你的数据存储路径(如果之前没指定过,需要先创建数据目录,比如c:\mongodb\data):

mongod --auth --dbpath "c:\mongodb\data"

方式二:修改配置文件(Windows服务场景,推荐)

找到你的MongoDB配置文件(一般是mongod.cfg,位于c:\mongodb目录下),打开后找到security部分,添加或修改为:

security:
  authorization: enabled

保存配置文件后,重启服务:

net start MongoDB

4. 验证访问控制是否生效

现在连接MongoDB需要进行身份认证了,试试以下两种方式:

方式一:连接时直接认证

mongo -u admin_account -p StrongPassword123! --authenticationDatabase admin

替换成你设置的用户名和密码,连接成功后就可以正常操作数据库了。

方式二:先连接再认证

mongo
use admin
db.auth("admin_account", "StrongPassword123!")

如果返回1,说明认证成功;返回0则表示用户名或密码错误。认证成功后,你可以尝试访问其他数据库,比如use test,如果没有对应权限的话会收到权限错误提示,这就说明访问控制已经生效啦!

额外提示

  • 除了root用户,你还可以为不同的数据库创建权限更精细的用户,比如只读用户、读写用户等,使用db.createUser时指定对应的roles即可(比如{ role: "readWrite", db: "test" })。
  • 确保你的数据目录存在且有读写权限,否则启动MongoDB时会报错。

内容的提问来源于stack exchange,提问作者Penny

火山引擎 最新活动