mongodb创建用户、认证连接、java连接


一般情况下,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");

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值