一般情况下,mongoDB 数据库都要建立认证连接,这就需要用户对数据库创建管理员和用户认证,而对于mongoDB 而言,在创建管理员和用户时,分配的roles 是决定用户操作数据库权限的关键。
role
数据库用户角色(Database User Roles)
read : 授权User只读数据的权限,允许用户读取指定的数据库
readWrite 授权User读/写数据的权限,允许用户读/写指定的数据库
数据库管理角色(Database Admininstration Roles)
dbAdmin:在当前的数据库中执行管理操作,如索引的创建、删除、统计、查看等
dbOwner:在当前的数据库中执行任意操作,增、删、改、查等
userAdmin :在当前的数据库中管理User,创建、删除和管理用户。
备份和还原角色(Backup and Restoration Roles)
backup
restore
跨库角色(All-Database Roles)
readAnyDatabase:授权在所有的数据库上读取数据的权限,只在admin 中可用
readWriteAnyDatabase:授权在所有的数据库上读写数据的权限,只在admin 中可用
userAdminAnyDatabase:授权在所有的数据库上管理User的权限,只在admin中可用
dbAdminAnyDatabase: 授权管理所有数据库的权限,只在admin 中可用
集群管理角色(Cluster Administration Roles)
clusterAdmin:授权管理集群的最高权限,只在admin中可用
clusterManager:授权管理和监控集群的权限
clusterMonoitor:授权监控集群的权限,对监控工具具有readonly的权限
hostManager:管理server
超级角色(super master Roles)
root :超级账户和权限,只在admin中可用le
mongodb设置账号和密码
mongodb密码和传统数据如mysql等有些区别: mongodb的用户名和密码是基于特定数据库的,而不是基于整个系统的。所有所有数据库db都需要设置密码。
1、创建管理员账户
use admin
db.createUser({user:"admin",pwd:"adminadmin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。admin用户用于管理账号,不能进行关闭数据库等操作。
2、创建了root
db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]})
3、创建自己的数据库的管理角色
use kgcdsj
db.createUser({user:"kgcuser",pwd:"123456",roles:[{role:"dbOwner",db:"kgcdsj"}]})
4、查看用户
show users
5、删除用户
删除用户必须由账号管理员来删除,切换到admin角色
use admin
db.auth("admin","adminadmin")
//删除单个用户
db.system.users.remove({user:"xxxxx"})
//删除所有用户
db.system.users.remove({})
认证连接
1、vi mongo.conf
security:
authorization:enabled
2、验证
./bin/mongod -config mongo.conf
./bin/mongo
show dbs //mongo进入数据库,没有权限
use kgcdsj //选中要使用的数据库
db.auth("kgcuser","123456") //权限验证 验证通过后返回1
show tables;
db.students.find()
java连接
ServerAddress serverAddress = new ServerAddress("192.168.232.211", 27017);
ArrayList<ServerAddress> addrs = new ArrayList<>();
addrs.add(serverAddress);
MongoCredential scramSha1Credential = MongoCredential.createScramSha1Credential("kgcuser", "kgcdsj", "123456".toCharArray());
ArrayList<MongoCredential> credentials = new ArrayList<>();
credentials.add(scramSha1Credential);
MongoClient mongoClient = new MongoClient(addrs, credentials);
MongoDatabase kgcdsj = mongoClient.getDatabase("kgcdsj");
System.out.println(kgcdsj);
MongoIterable<String> strings = kgcdsj.listCollectionNames();
for (String string : strings) {
System.out.println(string);
}
MongoCollection<Document> students = kgcdsj.getCollection("students");