操作系统:centos8.0
以下是我亲身实战而来,建议根据我的步骤一步步骤。
第一步,创建mongodb管理员账户
mongo命令终端后,进入admin数据库,创建一个权限为root的管理员账户,因为当配置文件中authorization: enabled后,你将不能匿名登录,以后如果创建其他用户,就用此root账户登录。
use admin
db.createUser({user:"name",pwd:"password",roles:[{"role":"root","db":"admin"}]})
第二步,创建数据库账户
进入你想创建用户的数据库,此处非常重要,必须要先进入相关的数据库,如果在admin数据下创建用户是无法访问的,哪怕用户权限设置成userAdminAnyDatabase也无效
mongo
use shuanghei
创建用户的命令如下
db.createUser({user:"name",pwd:"password",roles:[{"role":"readWrite","db":"shuanghei"}]})
这里role使用readWrite足够了,关于role有很多,readWrite、readAnyDatabase、userAdminAnyDatabase、root等等我也没有仔细去研究,可以去参考官网。
db后面的数据库,必须是当前use的数据库,另外给个小贴士,密码中不要有@符号,否则node链接的时候会出问题,因为无法判断@是密码还是关键字。
创建完毕后,可以使用以下命令,查看该数据库下有多少用户。
show users
如果是多个数据库,可以重复第二步,进入不同数据再创建帐号。
三,开启系统防火墙
如果阿里云服务器,先去服务器放行27017端口,这是mongodb默认端口。
四,修改mongodb配置文件
主要修改两点
1,bindIp改成0.0.0.0,网上也有说注释这行也行,经我测试不可行,必须改成0.0.0.0
2,authorization改成enabled
# network interfaces
net:
port: 27017
# bindIp:127.0.0.1
bindIp: 0.0.0.0
#operationProfiling:
#replication:
# replSetName: bt_main
security:
# authorization: disabled
authorization: enabled
javascriptEnabled: false
之后你的mongodb就不能匿名访问了,必须用刚才root账户访问,进行用户相关操作,登录也很简单,进入终端后:
db.auth("name","password")
删除用户名也很简单,同样要先进入相关的数据库,执行以下命令即可
db.dropUser('name')
五,node链接
至此服务端配置完毕,使用mongoose修改一下连接字符串即可,记住,这里的帐号和密码,是第二步设置的帐号和密码,并非root的帐号密码。
const DB_URL = 'mongodb://name:password@111.111.111.11:27017/shuanghei'
至此顺利链接完毕