MongoDB的连接安全

原创
2012/04/13 15:56
阅读数 975

        最近公司系统要引入MongoDB,所以看了些不少的相关资料。但是发现MongoDB连接安全这块的资料甚少,在这里记录下MongoDB关于连接安全的相关操作。

         在默认情况下连接MongoDB,是不需要用户名和密码的,可以通过IP加端口号的方式直接访问,这样在实际运用中是非常危险的。那么接下来就看看MongoDB通过用户来访问的。

         MongoDB是通过在数据库下添加用户的方式来控制访问权限的,且必须以-auth方式启动MongoDB时才有效。在admin库下添加的用户,具有超级管理员的权限,在其他库下添加的用户,只能访问操作当前库。例如:

>use admin
>db.addUser('root','root')
//添加超级管理员用户
>use test
>db.addUser('test','test')
//添加test库用户
>mongod --dbpath c:\mongo_data --logpath c:\mongo\logs\logs.txt -auth &
//以auth方式启动mongodb服务
>use admin
>show collections
Fri Apr 13 15:47:14 uncaught exception: error: {
        "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
        "code" : 10057
}
没权限
>db.auth('root','root')
//然后再
>db.collections
//就能看到表了
(1)JAVA方式通过用户密码访问MongoDB
Mongo m = new Mongo(); 
        
DB db = m.getDB("admin"); 
         
char[] pwd_char = "pwd1".toCharArray(); 
         
boolean auth = db.authenticate("user1",pwd_char);//登陆验证,成功之后才能进行有效操作 
 
if(!auth){ 
    throw new RuntimeException(); 
} 
 
(2)PHP方式通过用户密码访问MongoDB

//PHP是直接在获取连接对象时就进行配置了 
//mongodb://账号:密码@连接地址 
 
$m = new Mongo("mongodb://user1:pwd1@localhost");

展开阅读全文
打赏
1
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
1
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部