报错:Mon Nov 25 01:09:48 CST 2019There was an unexpected error (type=Internal Server Error, status=500).Command failed with error 13 (Unauthorized): ‘command update requires authentication‘ on server 192.168.180.113:27017. The full response is {"ok": 0.0, "errmsg": "command update requires authentication", "code": 13, "codeName": "Unauthorized"}; nested exception is com.mongodb.MongoCommandExce...
默认情况下,mongodb不启用验证的。数据库级别的权限,要么可读写要么只读权限。mongod的验证配置比较操蛋。分两种情形:一种是单服务器,只需启动时添加–auth参数即可。 另一种是复制集、分片集群服务器,必须指定keyfile参数,其他节点之间的通讯基于该keyfile。在这种情况下,–auth参数是隐含启用的,所有的mongodb访问都必须验证的。 Mongodb中安全权限验证是数据库级别的1、在admin中创建的 权限账号是全局性的,可以访问所...
Mongodb默认是不开启认证的,对于数据库来说,这有很大的安全隐患,下面记录下生产中Mongodb权限认证的方法。
一,环境阿里云:CentOS Linux release 7.4.1708 (Core)Mongodb版本: 3.6.2二,添加超级用户Mongodb的权限认证是基于数据库的,要想创建普通用户,必须要通过管理员来操作。 > use admin> db.createUser( {user: "root",pwd: "123456",roles: [ { role: "root", db: "admin" } ]})
#结果如下
Successfully added ...
每个MongoDB库可以有许多用户,只有开启了用户并且有对于的库操作权限才能读写操作,MongoDB安全机制为:1、首先要建立一个超级用户,可以由超级用户认证后再创建对应库的用户目标:1、创建一个超级用户进行管理(包括创建新用户)2、超级用户认证后再创建普通用户用于读写对应的数据库 版本:> db.version()3.4.7 一、使用admin数据库> use adminswitched to db admin> show collections 二、创建超级用户> db.createUser({user:‘a...
副本集架构中需要开启用户的授权认证,也要配置副本集内部、成员身份验证。副本集对于成员的内部身份验证,MongoDB可以使用keyfiles或x.509证书。使用keyfile身份验证,副本集中的每个mongod实例都将keyfile的内容用作对部署中其他成员进行身份验证的共享密码。只有具有正确密钥文件的mongod实例才能加入副本集。所选方法用于所有内部通信。例如,当客户端使用支持的身份验证机制之一向mongos进行身份验证时,mongos然后使用配置的...
192.168.56.11 192.168.56.12 192.168.56.13 三台机器 1.##基础配置mongodb-linux-x86_64-3.4.10.tgz
tar xf mongodb-linux-x86_64-3.4.10.tgz
mv mongodb-linux-x86_64-3.4.10 /root/mongodb
cd /root/mongodb
mk...
软件版本: MongoDB 4.0 以上(包含4.0版本)
设置和取消连接认证
设置认证:在安装目录下找到bin\mongod.cfg, 添加认证代码,重启服务。
取消认证:删除添加代码,重启服务。
参考:https://blog.csdn.net/zhongkaigood/article/details/81475904
=======================================================================================
mongoDB Server 创建管理员和用户
在无验证模式下对mongoDB 创建管理员,并分配给管理...
转载链接
生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)
请问下 mongodb可以修改认证方式么,现在是3.xx,打算还是使用以前2.几的MD5去验证账号密码.
#先访问到admin数据库use admindb.auth("admin","admin")#切换到 mydb ,在数据库 mydb 中创建角色
#roles: 创建角色"testRole"在数据库 "mydb" 中
#privileges: 该角色可查看"find"数据库"mydb"的所有集合
#db.dropRole("testRole")
use mydbdb.createRole({ role: "testRole",privileges: [{ resource: { db: "mydb", collection: "" }, actions: [ "find" ] }],roles: []
})#在admin数据库生成集合system.roles。查看角色。
> u...
>db.addUser(‘yshy‘,‘yshy‘)
{"user" : "yshy","readOnly" : false,"pwd" : "2059c25b25df531ec5652d3eba0dc175","_id" : ObjectId("5556a6da70d9c8c0f6a120ab")
}
admin>db.auth(‘yshy‘,‘yshy‘)
1
admin>db.system.users.find()
{ "_id" : ObjectId("545ab87bdc558a6592571d5b"), "user" : "yanshiying", "readOnly" : false, "pwd" : "044f63528e7807275411c4731052fe36" }
{ "_id" : ObjectId("5556a6da70d9c8c0f6a120a...
1:副本集配置参考这篇博客:
http://www.cnblogs.com/xiaoit/p/4478951.html
2:副本集的认证
假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这里只做演示使用)
192.168.91.132
192.168.91.133
副本集总体思路是用户名、密码和keyfile文件,keyfile需要各个副本集服务启动时加载而且要是同一文件,然后在操作库是需要用户名、密码KeyFile文件必须满足条件:(1)至少6个字符,小于1024字节(2)认证时候不考虑文件...
port = 27017
2
3 auth = true
4
5 bind_ip = 0.0.0.0修改这三行。
之后的问题就出在连接认证上了 ,mongoDB 3.0以后的版本认证变得复杂起来,连接工具都不能连接上,必须修改认证版本> use admin
switched to db admin
> var schema = db.system.version.findOne({"_id" : "authSchema"})
> schema.currentVersion = 3
3
> db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified"...
Mongodb安全认证在单实例和副本集两种情况下不太一样,单实例相对简单,只要在启动时加上 --auth参数即可,但副本集则需要keyfile。
一、单实例
1.启动服务(先不要加auth参数)
2.登陆后切换到admin库并添加管理员账号
2.1 创建系统管理员用户
默认条件下,超级管理员只能用于帐号管理,不能进行其他数据库操作,可以通过自己给自己授权实现。生产环境中的管理员,如果某个帐号包含了角色userAdminAnyDatabase或者userAdmin,...
1 mongodb系统中,数据库是由超级用户来创建的,一个数据库可以包含多个用户,一个用户只能在一个数据库下,不同数据库中的用户可以同名!2 当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添加了一个用户。3 特定数据库比如DB1下的用户User1,不能够访问其他数据库DB2,但是可...