在安装完mongodb后使用的时候发现mongodb没有设置访问权限,只要是连接上去后就可以随意操作,安全性很低,于是尝试进行权限设置,但是在参照网上的教程进行权限设置的过程中发现自己走了一些弯路,现在记录下来,留作启示。
1、首先区分一下mongodb的服务端和客户端,启动服务端的程序是mongod后面加一些参数,也可默认执行配置文件中的参数,然后是启动客户端连接是mongo命令后面加一些参数,跟启动服务端命令差一个d。跟mysql和mysqld一个原理。
2、区分一下启动windows服务和启动mongodb服务端,启动mongodb服务是在windows的服务列表里添加上mongodb的服务端程序,这样只需要输入命令net start/stop mongodb就可以开启或者关闭mongodb服务了。
一、安装mongodb软件
这个搜一下官网,下载下来安装一下就好。
二、设置mongodb的用户权限
安装好的mongodb是默认没有用户的,所以需要添加用户。
执行mongod开启服务端后,另外打开一个dos窗口(都是管理员权限打开)执行命令mongo连接上mongodb:
如图红框提示,没有设置访问控制,读写配置没有作限制。
这个时候切换到admin数据库,然后执行db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]}),添加用户名为admin密码为admin的root用户,如下图所示为写入的用户信息
三、修改配置文件
打开安装目录下的bin目录,里面有个名字为mongod.cfg的文件,然后取消security字段的注释,并且在下面一行空两格加上authorization=enabled语句
修改后保存
四、以认证方式启动mongodb
之前的普通的mongodb启动方式最简单的就是执行命令mongod,这回需要在后面加上参数--auth,即执行:
这样就以认证方式启动了mongodb,同样新窗口执行mongo命令,连接数据库
可以看到之前提示的没有访问控制已经没有了
然后执行一下show dbs会发现已经没法显示了
这就需要认证一下了,切换到admin数据库,执行命令db.auth("admin","admin"),这里admin分别是账号和密码
这里返回的是1,说明认证成功。注意如果没有切换到admin数据库执行认证的话会认证失败,需要到对应账号的数据库去执行,否则返回0失败,如下:
总结:
开启windows服务和执行mongod命令开启mongodb的方式都是可以的,但是如果对配置文件进行了修改,windows服务需要先卸载掉再重新安装,否则执行起来会有问题。另外就是在数据库中进行认证的时候需要到账号对应的数据库下去认证,否则会报错返回失败。