首先你要搞mongodb授权你首先要搞清楚你的版本
这里使用3.x版本做演示,别的版本不讨论~
1.认证方式:mongodb认证方式包括2种,进入认证,和 连接认证。
进入认证就是:进入到mnogodb后进行认证(废话)
use admin
db.auth(“myUserAdmin”, “abc123” )
db.auth(“myUserAdmin”, “abc123” )
连接认证就是:连接到mongodb就开始连接认证(废话)
mongo –port 27017 -u “myUserAdmin” -p “abc123” –authenticationDatabase “admin”
2.构建认证体系:你要想构建认证体系,你首先需要一个全新的mongodb,有数据的也行,唯一的要求就是没有开启认证,也就是无密码模式,故名思意就是直接可以通过 端口 +地址进行连接的mongodb无密码模式。
进入mongo环境
设置设置一个最大权限控制的管理员账户 权限为所有权限 userAdminAnyDatabase
use admin
db.createUser(
{
user: “myUserAdmin”,
pwd: “abc123”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
}
)
db.createUser(
{
user: “myUserAdmin”,
pwd: “abc123”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
}
)
有了超级管理权限后,就可以关闭数据库了。
然后在开启数据库的后面增加 –auth 例如:
mongod –port 27017 –dbpath /data/db1 –auth
启动数据库后 使用之前提过的
连接方式1进入数据库
use admin
db.auth(“myUserAdmin”, “abc123” )
db.auth(“myUserAdmin”, “abc123” )
连接方式2进入数据库
mongo –port 27017 -u “myUserAdmin” -p “abc123” –authenticationDatabase “admin”
进入数据库后 方可以继续设置权限:
这里根据需求如下:
设置 mytester用户,此用户有test库的读写权限,有reporting库的读权限 密码为 xyz123
首先,进入数据库test
use test
按照需求增加用户权限即:
db.createUser(
{
user: “myTester”,
pwd: “xyz123”,
roles: [ { role: “readWrite”, db: “test” },
{ role: “read”, db: “reporting” } ]
}
)
{
user: “myTester”,
pwd: “xyz123”,
roles: [ { role: “readWrite”, db: “test” },
{ role: “read”, db: “reporting” } ]
}
)
完成以上配置,再开启一个mongo客户端进行连接测试即:
mongo –port 27017 -u “myTester” -p “xyz123” –authenticationDatabase “test”
或者
mongo –port 27017
use test
db.auth(“myTester”, “xyz123” )
use test
db.auth(“myTester”, “xyz123” )
GET了吗!
参考文章
mongo官方文档:
https://docs.mongodb.com/v3.4/tutorial/enable-authentication/
https://docs.mongodb.com/v3.4/tutorial/enable-authentication/