学习MongoDB(三)——安全和授权
MongoDB在非授权模式下启动显然是不安全的,任何人都能通过客户端连接数据库服务器,并且操作里面的所有数据。MongoDB以安全的授权方式启动:mongod --auth
这样就只有数据库添加的授权用户才能连接数据库,并进行数据操作。
官方给出的用户管理的说明:http://www.mongodb.org/display/DOCS/Security+and+Authentication
添加一个admin超级管理员用户:
> use admin> db.addUser("oneAdminUser", "123456")
理解成MongoDB把所有的admin管理员添加到了一个admin数据库中进行管理。
用admin用户的身份登陆数据库,给一般的数据添加普通用户:
> use projectx> db.addUser("joe", "passwordForJoe")> db.addUser("guest", "passwordForGuest", true)
其中第二个guest用户的readonly属性为true。
查看某个数据库中拥有的所有用户:
> use projectx> show users> // or>db.system.users.find() 给某个用户更改密码也用db.addUser,这个函数会判断用户村不存在,不存在就创建,存在就(密码)替换掉以前的。
删除用户:
> db.removeUser("user1")> // or> db.system.users.remove({user:"user2"})好了,用户添加完了,现在来看这么用mongo 以某个用户的身份登陆MongoDB数据库,首先确保数据库以授权的安全形式启动了,以admin用户的身份登陆
> mongo 192.168.1.154/admin -u oneAdminUser -p 123456oneAdminUser密码是123456,以admin的身份登陆位于192.168.1.154上的MongoDB数据库。因为是admin用户,登陆进去之后就能进行任何操作。
普通用户登陆普通的数据库的方式类似的:
> mongo 192.168.1.154/projectx -u joe -p passwordForJoe
joe这个用户登陆位于192.168.1.154机器上的projectx数据库。
如果在Java程序中登陆,代码如下:
Mongo mongo = new Mongo("192.168.1.154", 27017); DB db = mongo.getDB("admin"); db.authenticate("oneAdminUser", "123456".toCharArray());System.out.println("数据库列表:"+mongo.getDatabaseNames());//所有有数据的数据库名称db = mongo.getDB("projectx");//然后可以对任何数据库进行任何操作System.out.println(db.command("isMaster"));DBCollection collection = db.getCollection("onecollection"); collection.find(); 普通用户登陆普通数据库:
Mongo mongo = new Mongo("192.168.1.154", 27017); db =mongo.getDB("projectx");db.authenticate("guest", "123456".toCharArray()); DBCollection collection = db.getCollection("onecollection"); collection.find();guest这个用户就只能对projectx这个数据库进行操作了。
页:
[1]