【Mongo】mongodb的用户认证
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,1.创建超级账号> use admin ;> db . createUser ( { user : "admin" , pwd : "123456" , roles : [ { role : "roo
千家信息网最后更新 2025年01月20日【Mongo】mongodb的用户认证
具体角色:
认证方式二
1.创建超级账号
- > use admin ;
- > db . createUser ( { user : "admin" , pwd : "123456" , roles : [ { role : "root" , db : "admin" } ] } )
- Successfully added user : {
- "user" : "admin" ,
- "roles" : [
- {
- "role" : "root" ,
- "db" : "admin"
- }
- ]
- }
user:用户名
pwd:密码
roles :指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。 role里的角色 可以选:
- Built - In Roles(内置角色):
- 1 . 数据库用户角色:read、readWrite ;
- 2 . 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 3 . 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 4 . 备份恢复角色:backup、restore;
- 5 . 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 6 . 超级用户角色:root
- // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
- 7 . 内部角色:__system
具体角色:
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system . profile
- userAdmin:允许用户向system . users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
2.开启权限认证
- 配置文件添加
- [ dbaadmin@ ip - 172 - 31 - 36 - 77 ~ ] $ more /usr/ local / mongodb/conf/mongod . conf
- auth = true
3.重启后认证超级账号
- [ root@iZ2ze66bhrbxkc31nljgjnZ mongodb ] # /usr/ local / mongodb/bin/mongo
- MongoDB shell version : 3 . . 6
- connecting to : test
- > show dbs ; --没权限查看
- 2018 - 05 - 07T14 : 29 : 25 . 847 + 0800 E QUERY Error : listDatabases failed : {
- "ok" : 0 ,
- "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }" ,
- "code" : 13
- }
- at Error ( < anonymous > )
- at Mongo . getDBs ( src/mongo/shell/mongo . js : 47 : 15 )
- at shellHelper . show ( src/mongo/shell/utils . js : 630 : 33 )
- at shellHelper ( src/mongo/shell/utils . js : 524 : 36 )
- at ( shellhelp2 ) : 1 : 1 at src/mongo/shell/mongo . js : 47
- > use admin ;
- switched to db admin
- > db . auth ( 'admin' , '123456' ) ; -admin下认证超级账号, 数据库帐号是跟着数据库来走的,哪里创建哪里认证。
- 1
- > show dbs ;
- admin 0 . 078GB
- local 0 . 078GB
- rundb 0 . 078GB
- rundb2 0 . 078GB
4.添加普通账号
- > use rundb2 ;
- switched to db rundb2
- > db . createUser ( { user : 'runuser2' , pwd : '123456' , roles : [ { role : "dbOwner" , db : " rundb2 " } ] } )
- Successfully added user : {
- "user" : "runuser2" ,
- "roles" : [
- {
- "role" : "dbOwner" ,
- "db" : "rundb2"
- }
- ]
- }
- > show users ; <1pre style="margin-top:0px;margin-bottom:0px;white-space:pre-wrap;text-align:justify;font-family:;" "=""> #查看当前库下的用户
- {
- "_id" : "rundb2.runuser" ,
- "user" : "runuser" ,
- "db" : "rundb2" ,
- "roles" : [
- {
- "role" : "readWrite" ,
- "db" : "rundb2"
- }
- ]
- }
- {
- "_id" : "rundb2.runuser2" ,
- "user" : "runuser2" ,
- "db" : "rundb2" ,
- "roles" : [
- {
- "role" : "dbOwner" ,
- "db" : "rundb2"
- }
- ]
- }
5.普通账号认证
- 认证方式一
- [ root@iZ2ze66bhrbxkc31nljgjnZ mongodb ] # /usr/ local / mongodb/bin/mongo - u runuser - p 123456 rundb2
- MongoDB shell version : 3 . . 6
- connecting to : rundb2
- > show collections ;
- system . indexes
- testcoll
- testcoll2
认证方式二
- [ root@iZ2ze66bhrbxkc31nljgjnZ mongodb ] # /usr/ local / mongodb/bin/mongo
- MongoDB shell version : 3 . . 6
- connecting to : test
- > use rundb2 ;
- switched to db rundb2
- > show dbs ;
- 2018 - 05 - 07T14 : 36 : 46 . 809 + 0800 E QUERY Error : listDatabases failed : {
- "ok" : 0 ,
- "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }" ,
- "code" : 13
- }
- at Error ( < anonymous > )
- at Mongo . getDBs ( src/mongo/shell/mongo . js : 47 : 15 )
- at shellHelper . show ( src/mongo/shell/utils . js : 630 : 33 )
- at shellHelper ( src/mongo/shell/utils . js : 524 : 36 )
- at ( shellhelp2 ) : 1 : 1 at src/mongo/shell/mongo . js : 47
- > db . auth ( 'runuser2' , '123456' )
- 1
- > show collections ;
- system . indexes
- testcoll
- testcoll2
5账号管理
- 修改密码
- MongoDB 修改帐号的密码有两种方式: 1 . 使用 changeUserPassword 方法 2 . 使用 updateUser 方法里面的 pwd 参数
- / / 验证帐号密码
- > db . auth ( "biadmin" , "biadmin" )
- 1
- //修改帐号密码
- > db . changeUserPassword ( "biadmin" , "123" )
- //使用原密码验证失败返回0
- > db . auth ( "biadmin" , "biadmin" )
- Error : Authentication failed .
- 0
- //使用修改后密码验证成功返回1
- > db . auth ( "biadmin" , "123" )
- 1
- //使用updateUser 修改密码
- > db . updateUser (
- "biadmin" ,
- {pwd : "biadmin" } )
- //验证密码成功返回1
- > db . auth ( "biadmin" , "biadmin" )
- 1
- 删除帐号
- MongoDB 删除帐号有两种方式:
- 1 . 使用 dropUser ( "username" ) 删除当前数据库下指定帐号
- 2 . 使用 dropAllUsers ( ) 删除数据库下所有帐号
- / / 已经创建两个测试帐号
- > db . getUser ( "test1" )
- {
- "_id" : "bitest.test1" ,
- "user" : "test1" ,
- "db" : "bitest" ,
- "roles" : [
- {
- "role" : "dbAdmin" ,
- "db" : "bitest"
- }
- ]
- }
- > db . getUser ( "test2" )
- {
- "_id" : "bitest.test2" ,
- "user" : "test2" ,
- "db" : "bitest" ,
- "roles" : [
- {
- "role" : "dbAdmin" ,
- "db" : "bitest"
- }
- ]
- }
- //使用dropUser删除帐号test1成功返回true
- > db . dropUser ( "test1" )
- true
- //查询帐号test1已不存在
- > db . getUser ( "test1" )
- null
- //使用dropAllUsers删除所有帐号
- > db . dropAllUsers ( )
- 2
- //查询帐号 test2,biadmin 都已不存在
- > db . getUser ( "test2" )
- null
- > db . getUser ( "biadmin" )
- null
- //查询数据库下所有帐号返回空数组
- > db . getUsers ( )
- [ ]
6 更改用户信息
更改role,密码都行db.updateUser( "test",{ roles:[ { role: "readWrite", db: "welike_mongo" } ], pwd:"123456" })
更多的操作查看参照文档:
https://www.cnblogs.com/shiyiwen/p/5552750.html
https://www.cnblogs.com/damingge/p/6507605.html
数据
数据库
用户
角色
帐号
密码
权限
认证
账号
管理
方式
验证
成功
查询
普通
函数
数组
方法
两个
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
吉林中天网络技术有限公司
北航网络安全学院复试线
广州办公系统软件开发价位
科旭网络技术
网络安全发展史调查报告
上位机软件开发工资低
软件开发实例代码
idea无法关闭服务器
南邮网络安全复试
南宁广电网络技术开发公司
android软件开发考核指标
数据库 知网
网络安全app图标
央企网络安全治理
网络安全培训排行榜
山大网络安全研究所所长
程序软件开发高品质的选择
维普信息数据库
数据库 查找第一个字
互联网教育科技人工智能
深圳软件开发培训班价格
午夜服务器
广州闪玩网络技术有限
网络安全发展史调查报告
指悦网络技术有限公司招聘
阿特拉斯155服务器
广东服务器机柜价钱
以色列网络技术
软件开发经费预算项目
网络安全知识怎么画