MongoDB服务安装后,默认未开启权限验证。如果服务监听在0.0.0.0,则可远程无需授权访问数据库。
3.0之前版本的MongoDB,默认监听在0.0.0.0,3.0及之后版本默认监听在127.0.0.1。
3.0之前版本,如未添加用户管理员账号及数据库账号,使用--auth参数启动时,在本地通过127.0.0.1仍可无需账号密码登陆访问数据库,远程访问则提示需认证;
3.0及之后版本,使用--auth参数启动后,无账号则本地和远程均无任何数据库访问权限。
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作)而且可以远程访问数据库。
nmap -p 27017 --script mongodb-info <ip>
mongod --bind_ip 127.0.0.1 --dbpath /tmp/test
或:在配置文件中指定监听IP,Linux下默认配置文件为/etc/mongod.conf。
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
iptables -A INPUT -s -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
MongoDB 3.0及以上版本启动时添加--auth参数开启认证访问,此时若数据库中无账号,本地登录则无权限进行任何操作,因此需要先以无认证的方式启动服务并创建系统用户管理员账号。
$ mongod --dbpath /data/db
$ mongo --host 127.0.0.1 --port 27017
ongoDB shell version v4.0.8
connecting to: mongodb://127.0.0.1:27017/test?gssapiServiceName=mongodb
#切换到admin库:
> use admin
switched to db admin
#创建用户
> db.createUser(
{
user: "myUserAdmin",
pwd: "Passw0rd",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
#创建成功后提示信息:
Successfully added user: {
"user" : "myUserAdmin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
说明:3.0之前版本使用db.addUser方法创建用户。
$ mongod --auth --port 27017 --dbpath /tmp/test
或:在配置文件中添加以下内容,指定配置文件启动服务:
#security:
security:
authorization: enabled
指定配置文件启动MongoDB
$ mongod --config /etc/mongod.conf
$ mongo --port 27017 -u "myUserAdmin" -p "Passw0rd" --authenticationDatabase "admin"
也可以在连接MongoDB是不指定认证信息,连接成功后通过db.auth()方法进行认证:
> use admin
switched to db admin
> db.auth("myUserAdmin","Passw0rd")
1 #返回1,表示认证成功
> use products
> db.createUser(
{
user: "accountUser",
pwd: "password",
roles: [ "readWrite", "dbAdmin" ]
}
)
#用户创建成功
Successfully added user: { "user" : "accountUser", "roles" : [ "readWrite", "dbAdmin" ] }
$ mongo --port 27017 -u "accountUser" -p "password" --authenticationDatabase "products"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。