【Mongo】mongodb的用户认证
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,1.创建超级账号> use admin ;> db . createUser ( { user : "admin" , pwd : "123456" , roles : [ { role : "roo
千家信息网最后更新 2025年11月07日【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安全错误
数据库的锁怎样保障安全
企业如何保证数据库安全
三级网络技术激活码未来教育
郑州地区网络安全专项检查
商务服务器有必要买吗
阿里云虚拟服务器管理
网络安全从我做起心得
浙江c语言软件开发定制费用
网络安全活动开场致辞
数据库无限大怎么写
市网络安全应急指挥中心总结
打印服务器脱机有哪些原因
爱丽丝服务器
公务员网络技术岗
力控软件开发框架
asp 连接数据库代码
学软件开发怎么起步
腾讯视频 网络安全提示
网络安全内设机构
ftp远程服务器连接
西安胡门网络技术
电竞网络技术
域控制器数据库文件是哪个
软件开发前端和后端
河南回收服务器小卡
2022网络安全行业全景图
加强网络安全管理的函
湖北数据软件开发价格优惠
网络安全家长会主题
域名服务器工作原理
云原神主机在服务器