ITPub博客

首页 > 数据库 > NoSQL > mongodb系列-访问控制

mongodb系列-访问控制

原创 NoSQL 作者:a3zi 时间:2015-02-15 15:29:03 0 删除 编辑

默认启动 MongoDB 服务时没有任何参数,可以对数据库任意操

作,而且可以远程访问数据库,所以推荐开发阶段可以不设置任何参数,但对于生产环境还

是要仔细考虑一下安全方面的因素,而提高 MongoDB 数据库安全有几个方面:

1,绑定IP 内网地址访问MongoDB 服务

2,设置监听端口

3,使用用户名和口令登录

 

一,绑定IP内网地址访问MongoDB:

可以在配置文件里面配置绑定的内网的IP,也可以在启动mongod服务时加--bind_ip  192.168.0.100这种参数:

vi /etc/mongod.conf

bind_ip=192.168.0.100

这样客户端访问时需要明确指定服务端的IP,否则会报错:

[root@localhost bin]# mongo 192.168.0.100

MongoDB shell version: 2.6.7

connecting to: test

> 

 

二,设置监听端口:

vi /etc/mongod.conf

修改成port=27018

或者启动mongod服务直接加--port参数

./mongod --bind_ip 192.168.0.100 --port 27018

服务端指定了端口后,客户端必须要明确指定端口才可以正常访问

[root@localhost bin]# mongo 192.168.0.100:27018

MongoDB shell version: 2.6.7

connecting to: test

> 

 

三,使用用户名和口令登录:

MongoDB 都默认有一个 admin 数据库(默认是空的),而 admin.system.users 中将会保存比在其它数据库中设置的用户权限更大的用户信息。

注意:当 admin.system.users 中没有添加任何用户时,即使 MongoDB 启动时添加了 --auth参数,如果在除 admin 数据库中添加了用户,此时不进行任何认证依然可以使用任何操作,直到知道你在 admin.system.users 中添加了一个用户。

在低版本中增加用户的命令是:addUser(),高版本一般用createUser():

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

Successfully added user: {

    "user" : "jack",

    "roles" : [

       {

           "role" : "userAdminAnyDatabase",

           "db" : "admin"

       }

    ]

}

> 

开启conf文件中的auth功能,设置用户和密码之后,再执行show dbs就会报错:

> show dbs;

2015-02-13T17:40:59.128+0800 listDatabases failed:{

    "ok" : 0,

    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",

    "code" : 13

} at src/mongo/shell/mongo.js:47

 

用db.auth()认证之后就可以执行了:

 

> use admin

switched to db admin

> db.auth('jack','123')

1

> show dbs

admin  0.078GB

local  0.078GB

> 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29806344/viewspace-1436692/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-08-15

  • 博文量
    45
  • 访问量
    228902