mongodb(3.0+)权限认证和远程链接如何开启?

2018-03-0202:11:23数据库教程Comments3,132 views字数 1443阅读模式

开发fragmentwall的时候最开始是在本地进行开发,当我部署到服务器时我需要本地连接到服务器的mongodb数据,中间涉及了远程连接和权限验证设置。经过查阅文档已经完成,在此进行记录方便以后查阅和帮助其他需要的朋友。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

创建用户

首先不要开启权限校验,你先创建一个超级用户。使用这个超级用户再去创建其他的用户和权限。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

1.切换到admin数据库

use admin切换到admin数据,默认mongodb是没有这个数据的不过没有关系,当我们创建一个用户后它会自动创建。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

2.创建一个超级用户

在admin数据库下使用下面的命令你可以给admin数据库创建一个超级用户文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

db.createUser({ user: "admin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

执行完命令之后需要验证用户是否创建完毕使用命令 show users可以查看用户信息,如果有刚才创建的admin用户代表创建成功,然后使用exit退出控制台。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

3.开启权限校验

mongodb数据库配置文件默认在/etc/mongod.conf中,使用你喜欢的编辑器打开它。sudo vim /etc/mongod.conf文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

然后将如下的安全设置打开(默认它是使用#注释起来的)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

security:
	authorization: enabled

4.修改mongodb监听地址

默认的mongodb监听地址为bindIp: 127.0.0.1,它只允许本地连接,现在修改为bindIp: 0.0.0.0,这样你可以远程进行连接了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

net:
  port: 27017
  bindIp: 0.0.0.0

4.重启mongodb服务

使用命令sudo service mongod restart重启你的mongodb服务文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

5.创建授权用户

这个时候你可以为不同的数据库创建不同的用户和权限了,首选你需要连接上数据库,然后切换到admin数据库中文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

use admin切换到admin数据库中`文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

接着登录超级用户文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

db.auth("admin", "adminpassword")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

跟着再切换到你要授权的其他数据库,比如我们需要将一个数据库testdatabase授权给monster这个用户,那么先要切换到testdatabase文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

use testdatabase文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

接着创建monster用户并且给予对应权限,命令如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

db.createUser({ user: "monster", pwd: "monsterpassword", roles: [{ role: "dbOwner", db: "testdatabase" }] })

执行完创建用户,所有的工作已经完成,下面来验证一下是否正确使用show users查看用户信息是否正确。然后使用这个用户登录再次验证。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

db.auth("monster", "monsterpassword")
show collections

如果上面一切正确,那么monster就有了访问testdatabase这个数据的权限了文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

6.在程序中连接使用

那么mongodb连接的字符串为文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

mongodb://youruser:yourpassword@localhost/yourdatabase

官方关于安全的文档文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

作者:Monster000
链接:https://juejin.im/post/5a8051c56fb9a0635f7e78c5
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/991.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/sjk/991.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定