MongoDB连接与开启用户验证

时间:2024-04-07 17:09:51

下载Robo 3T

这里用Robo 3T做为MongoDB的客户端来连接,Robo 3T即Robomongo,去官网https://robomongo.org/download 下载适合自己的版本:
MongoDB连接与开启用户验证这里下载的是zip压缩文件免安装版,下载完成,解压到合适的目录,双击robo3t.exe即可打开:
MongoDB连接与开启用户验证MongoDB连接与开启用户验证

通过Robo 3T连接

如下图,新建一个连接并保存:
MongoDB连接与开启用户验证点击Connect开始连接:
MongoDB连接与开启用户验证
连接成功:
MongoDB连接与开启用户验证

权限设置

MongoDB 安装完成以后,默认只允许本地连接,同时不需要使用任何账号密码就可以直接连接MongoDB,这样非常不安全。这里给Mongo设置一个管理员用户和一个数据库用户:
管理员用户:具有最高权限
数据库用户:只有某个数据库的操作的所有权限

配置mongo.conf

之前安装参考:https://blog.csdn.net/bbc2005/article/details/87900841,在mongo.conf中开启用户认证:

# 数据库文件路径
dbpath=E:\mongodb-win32-x86_64-2008plus-ssl-4.0.5\data
# 日志文件
logpath=E:\mongodb-win32-x86_64-2008plus-ssl-4.0.5\logs\mongo.log
# 日志采用追加模式,配置后mongodb日志会追加到现有的日志文件,不会重新创建一个新文件
logappend=true
# 启用日志文件,默认启用
journal=true
# 这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为 false
quiet=true
# 端口号 默认为 27017
port=27017
# 开启用户认证
auth=true

重启mongodb服务后,通过Robo 3T不可以连接了:
MongoDB连接与开启用户验证
但是切换到mongodb的安装目录下的bin文件夹下打开命令窗口,通过命令还是可以连接:
MongoDB连接与开启用户验证
这是因为此时MongoDB的库里还没有任何用户,开启了用户认证,用户还是可以通过localhost界面进入MongoDB进行用户设置,否则的话整个MongoDB就完全没法访问了也不能正常使用了。
不过执行命令的会报错,因为当前连接没有经过用户认证:
MongoDB连接与开启用户验证

新增管理员用户

通过命令use admin切换到admin数据库,输入命令: db.createUser({user:“admin”,pwd:“password”,roles:[“root”]}),创建具有最高权限的管理员用户:
MongoDB连接与开启用户验证
现在用户虽然是添加成功了,但如果不用户认证直接执行命令的话,还是会报错:
MongoDB连接与开启用户验证
输入 db.auth(“admin”,“password”)进行用户认证,如图:
MongoDB连接与开启用户验证
此时,输入 show users显示用户信息,如图:
MongoDB连接与开启用户验证
输入 show dbs显示数据库信息,如图:
MongoDB连接与开启用户验证
此时如下图在Robo 3T设置登录信息后,可以登录:
MongoDB连接与开启用户验证MongoDB连接与开启用户验证

新增数据库用户

通过命令use test切换到test数据库,输入命令: db.createUser({user:“test”,pwd:“test”,roles:[{role:“dbOwner”,db:“test”}]}),创建数据库用户:
MongoDB连接与开启用户验证
此时,因为当前窗口还是用admin做的用户认证,所以分别输入 show users会显示用户信息,输入 show dbs会显示数据库信息,如图:
MongoDB连接与开启用户验证
此时,输入 db.auth(“test”,“test”) 用test用户认证的话,再输入show usersshow dbs会报错:too many users are authenticated,如图:
MongoDB连接与开启用户验证
关闭当前窗口,重开一个命令窗口连接,认证后可以看到当前命令返回的信息:
MongoDB连接与开启用户验证
此时由于test数据库还没有实际创建,所以show dbs会显示空信息。

在Robo 3T新建一个test连接,设置登录信息后,可以登录:

MongoDB连接与开启用户验证MongoDB连接与开启用户验证