默认启动 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博客 ” ,链接:http://blog.itpub.net/29806344/viewspace-1436692/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29806344/viewspace-1436692/