Open monsterooo opened 6 years ago
在开发fragmentwall的时候最开始是在本地进行开发,当我部署到服务器时我需要本地连接到服务器的mongodb数据,中间涉及了远程连接和权限验证设置。经过查阅文档已经完成,在此进行记录方便以后查阅和帮助其他需要的朋友。
首先不要开启权限校验,你先创建一个超级用户。使用这个超级用户再去创建其他的用户和权限。
use admin切换到admin数据,默认mongodb是没有这个数据的不过没有关系,当我们创建一个用户后它会自动创建。
use admin
在admin数据库下使用下面的命令你可以给admin数据库创建一个超级用户
admin
db.createUser({ user: "admin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
执行完命令之后需要验证用户是否创建完毕使用命令 show users可以查看用户信息,如果有刚才创建的admin用户代表创建成功,然后使用exit退出控制台。
show users
exit
mongodb数据库配置文件默认在/etc/mongod.conf中,使用你喜欢的编辑器打开它。sudo vim /etc/mongod.conf
/etc/mongod.conf
sudo vim /etc/mongod.conf
然后将如下的安全设置打开(默认它是使用#注释起来的)
security: authorization: enabled
默认的mongodb监听地址为bindIp: 127.0.0.1,它只允许本地连接,现在修改为bindIp: 0.0.0.0,这样你可以远程进行连接了。
bindIp: 127.0.0.1
bindIp: 0.0.0.0
net: port: 27017 bindIp: 0.0.0.0
使用命令sudo service mongod restart重启你的mongodb服务
sudo service mongod restart
这个时候你可以为不同的数据库创建不同的用户和权限了,首选你需要连接上数据库,然后切换到admin数据库中
use admin切换到admin数据库中`
接着登录超级用户
db.auth("admin", "adminpassword")
跟着再切换到你要授权的其他数据库,比如我们需要将一个数据库testdatabase授权给monster这个用户,那么先要切换到testdatabase
testdatabase
use testdatabase
接着创建monster用户并且给予对应权限,命令如下
db.createUser({ user: "monster", pwd: "monsterpassword", roles: [{ role: "dbOwner", db: "testdatabase" }] })
执行完创建用户,所有的工作已经完成,下面来验证一下是否正确使用show users查看用户信息是否正确。然后使用这个用户登录再次验证。
db.auth("monster", "monsterpassword") show collections
如果上面一切正确,那么monster就有了访问testdatabase这个数据的权限了
那么mongodb连接的字符串为
mongodb://youruser:yourpassword@localhost/yourdatabase
官方关于安全的文档
希望能帮助到你 :)
在开发fragmentwall的时候最开始是在本地进行开发,当我部署到服务器时我需要本地连接到服务器的mongodb数据,中间涉及了远程连接和权限验证设置。经过查阅文档已经完成,在此进行记录方便以后查阅和帮助其他需要的朋友。
创建用户
首先不要开启权限校验,你先创建一个超级用户。使用这个超级用户再去创建其他的用户和权限。
1.切换到admin数据库
use admin
切换到admin数据,默认mongodb是没有这个数据的不过没有关系,当我们创建一个用户后它会自动创建。2.创建一个超级用户
在admin数据库下使用下面的命令你可以给
admin
数据库创建一个超级用户执行完命令之后需要验证用户是否创建完毕使用命令
show users
可以查看用户信息,如果有刚才创建的admin用户代表创建成功,然后使用exit
退出控制台。3.开启权限校验
mongodb数据库配置文件默认在
/etc/mongod.conf
中,使用你喜欢的编辑器打开它。sudo vim /etc/mongod.conf
然后将如下的安全设置打开(默认它是使用#注释起来的)
4.修改mongodb监听地址
默认的mongodb监听地址为
bindIp: 127.0.0.1
,它只允许本地连接,现在修改为bindIp: 0.0.0.0
,这样你可以远程进行连接了。4.重启mongodb服务
使用命令
sudo service mongod restart
重启你的mongodb服务5.创建授权用户
这个时候你可以为不同的数据库创建不同的用户和权限了,首选你需要连接上数据库,然后切换到admin数据库中
use admin
切换到admin数据库中`接着登录超级用户
db.auth("admin", "adminpassword")
跟着再切换到你要授权的其他数据库,比如我们需要将一个数据库
testdatabase
授权给monster这个用户,那么先要切换到testdatabase
use testdatabase
接着创建monster用户并且给予对应权限,命令如下
执行完创建用户,所有的工作已经完成,下面来验证一下是否正确使用
show users
查看用户信息是否正确。然后使用这个用户登录再次验证。如果上面一切正确,那么monster就有了访问
testdatabase
这个数据的权限了6.在程序中连接使用
那么mongodb连接的字符串为
官方关于安全的文档
希望能帮助到你 :)