MongoDB 权限管理 用户名和密码的操作
在刚安装完毕的时候MongoDB都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息。
当admin.system.users中一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作,直到在admin.system.users中添加了一个用户。
windows下打开DOS进入bin目录执行mongo打开shell:
D:\mongodb2.4.3\bin>mongo
使用admin库:
> use admin
> db.addUser("root","123456")
{
"user" : "root",
"readOnly" : false,
"pwd" : "34e5772aa66b703a319641d42a47d696"
}
验证用户:
> db.auth("root","123456")
1 //验证成功,返回1
> show dbs //查看全部数据库
admin 0.0625GB
local 0.03125GB
mydb 0.125GB
test (empty)
local 0.03125GB
mydb 0.125GB
test (empty)
> use mydb //使用mydb数据库
switched to db mydb
> db.addUser("101.key","123456") //默认可读写,只读为db.addUser("101.key","123456",true)
> db.system.users.find() //查看所有用户
> db.system.users.remove({user:"10.key"})//给当前数据库删除用户
>show collections //查看所有集合
>db.serverStatus() //可以获取到mongodb的服务器统计信息,其中包括 :全局锁,索引,用户操作行为等等这些统计信息
> exit //退出
D:\mongodb2.4.3\bin>mongostat -uroot -p123456 --port 27017 //观看实时数据变化
D:\mongodb2.4.3\bin>mongo admin -uroot -p123456 //指定admin数据库,帐号登录
-------------------------------------------------------------------------------------------------
远程用户连接
语法结构:mongo –uusername –ppwd ServerIP:port/dbname
其中port默认为27017
>mongo -uroot -p123456 192.168.2.150/admin
---------------------------------------------------------------------------
java 客户端链接主要代码:
private static Mongo mg = null;
private static Map dbMap = new HashMap();
private DB db = null;
private static Map dbMap = new HashMap();
private DB db = null;
public DAOMongo(){
if (mg == null){
try {
mg = new Mongo("localhost", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
if (dbMap.containsKey("mydb")){
db = (DB)dbMap.get("mydb");
}else{
db = mg.getDB("mydb");
boolean authResult = db.authenticate("101.key", "123456".toCharArray());
logger.info("authResult="+authResult);
if (authResult){
dbMap.put("mydb", db);
}
}
//admin 库 root 123456
}
if (mg == null){
try {
mg = new Mongo("localhost", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
if (dbMap.containsKey("mydb")){
db = (DB)dbMap.get("mydb");
}else{
db = mg.getDB("mydb");
boolean authResult = db.authenticate("101.key", "123456".toCharArray());
logger.info("authResult="+authResult);
if (authResult){
dbMap.put("mydb", db);
}
}
//admin 库 root 123456
}
李小家