本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,java大神匠心打造,零基础java开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2021-05(16)

2021-06(58)

2021-07(11)

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

发布于2021-06-12 16:17     阅读(587)     评论(0)     点赞(0)     收藏(4)



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

在这里插入图片描述



所属网站分类: 技术文章 > 博客

作者:niceboty

链接:http://www.javaheidong.com/blog/article/222537/93d3c0fbb37fa8c3a0f5/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)