2017年下半年新发布的MongoDB 3.6版本在安全性上做了很大提升,主要归结为两点:
1.将将bind_ip 默认值修改为了localhost;
2. 在db.createUser()和 db.updateUser()中添加了authenticationRestrictions 参数,可以用来控制Client端发来的请求源IP以及请求的Server端指定IP。
以下说明和测试主要是针对第一点。
以前的版本默认Mongo服务启动后,使用Server IP 可以直接登入,但是3.6 已将服务启动bind_ip的默认值限定为localhost。
因此,即使在Local Server使用ServerIP登入也会报错。
<图1>
只能使用localhost登入
<图2>
修改方式,修改conf 配置文件,调整bind_ip参数,将本地IP赋予此参数。赋予后使用Server IP登入可以,但此时使用localhost 失败。为了同时兼容2种登入方式,将参数的赋值调整为:
bind_ip=localhost,172.XXX.XXX.XXX
中间使用登号隔开。
<图3>验证说明采用上述参数配置后2种登入方式都可以。
<图3>
说明:(1) 如果不想做IP限制,可以将bind_ip 赋值为0.0.0.0 或者 在配置文件中启用另外一个参数bind_ip_all,将其设置为true。
以上两种设置都可以满足localhost登入和指定ServerIP登入。 当指定bind_ip_all参数时,配置文件中可以没有bind_ip参数。
(2)登入默认的数据库不同。在3.6 版本,默认的连接数据库变成了test,而3.4/3.2 版本默认是admin库。所以,在设置具有root权限的管理员账号时,请先转至admin下操作(因为账号的查询,系统只有在admin才可以查询,所以root权限的账号,建议在admin库创建,用户数据库的账号,转到用户数据库下创建)。账号的删除一定要在归属库下删除。