MongoDB数据库用户角色和权限管理详解_MongoDB

来源:脚本之家  责任编辑:小易  

例如:mysql安装配置好后,有一个自带的mysql数据库,里面有一张user表,用来存放用户62616964757a686964616fe59b9ee7ad9431333339653664,以及用户权限,而mongodb这个最像关系型的数据库,有没有这样的表呢。一,掌握权限,理解下面4条基本上就差不多1,mongodb是没有默认管理员账号,所以要先添加管理员账号,在开启权限认证。2,切换到admin数据库,添加的账号才是管理员账号。3,用户只能在用户所在数据库登录,包括管理员账号。4,管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。这一点比较怪二,添加管理员账号[root@localhost zhangy]# mongoMongoDB shell version: 2.4.6connecting to: tank> use admin //切换到admin数据库switched to db admin> show collections;system.indexessystem.users //用户表> db.system.users.find(); //用户表没有数据> db.addUser('tank','test'); //添加一个管理员账号{ "user" : "tank", "readOnly" : false, "pwd" : "988432606980d0695e4f668f6bbc643a", "_id" : ObjectId("529e5d543b6a4608ac833429")}三,开启动用户权限认证[root@localhost zhangy]# vim /etc/mongodb.conf //将auth=true前面的注释拿掉[root@localhost zhangy]# /etc/init.d/mongod restart //重启生效四,用户只能在用户所在数据库登录,管理员需要通过admin认证后才能管理其他数据库 [root@localhost zhangy]# mongoMongoDB shell version: 2.4.6connecting to: tank> show dbs; //显示所有数据库失败,因为还没有认证Wed Dec 4 06:39:50.925 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46> db.auth('tank','test'); //认证失败,因为这个用户不属于tank这个数据库Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" }0> use admin //切换到admin数据库switched to db admin> db.auth('tank','test'); //在admin数据库认证成功> use tank; //切换到tank数据库switched to db tank> show collections; //不会在提示没有权限了contactsystem.indexesusers五,添加普通用启> use tank;switched to db tank> db.addUser('tank1','test'); //为tank数据库添加了一个可读写用户tank1{ "_id" : ObjectId("529e5f8474b4c660718a70f3"), "user" : "tank1", "readOnly" : false, "pwd" : "35dd47abff098f5b4f0b567db8edeac5"}> db.addUser('tank2','test',true); //为tank数据库添加了一个只读用户tank2{ "user" : "tank2", "readOnly" : true, "pwd" : "1792916c544d247538ded52e6df7b887", "_id" : ObjectId("529e67553992b24438d5e315")}> exit //退出bye[root@localhost zhangy]# mongoMongoDB shell version: 2.4.6connecting to: tank> db.auth('tank1','test'); //刚添加的用户可以登录。六,php客户端连接1, 推荐方法一$mongo = new Mongo(); $db = $mongo->selectDB('tank'); //切换到tank数据库 $db->authenticate("tank3", "test"); //认证 $users= $db->selectCollection("users"); //选取users表 $cursor = $users->find(); //读取数据 foreach ($cursor as $id => $value) { echo "$id: "; print_r($value); echo "<br>";}这种方式比较好理解,根命令行下的操作过程差不多。2,推荐方法二$mongo = new Mongo("mongodb://tank3:test@127.0.0.1:27017/tank"); //认证用户,这里的数据库,只启认证作用 $db = $mongo->selectDB('tank'); //选取数据库 $users= $db->selectCollection("users"); $cursor = $users->find(); foreach ($cursor as $id => $value) { echo "$id: "; print_r($value); echo "<br>";}上面二种方法的不同在于,一个先选数据库在认证,一个先认证在选数据库www.zgxue.com防采集请勿采集本网。

查看数据库

使用终端命令行输入 mongo 登陆 mongodb 之后切换到 admin 库,并认证后可查看所有数据库,操作如下所示:

如何给mongodb数据库设置访问权限 1,mongodb是没有默认管理员账号,所以要先添加管理员账号,在开启权限认证。 2,切换到admin数据库,添加的账号才是管理员账号。 3,用户只能在用户所在数据库登录,包括管理员账号。 4,管理员可以管理所有数

[root@renwole.com ~]# mongoMongoDB shell version v4.4.0connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("1ea1-4343-9523-167a101973a9") }MongoDB server version: 4.4.0> use admin> db.auth("admin","InaM6Aip#2JBlWwY")1> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB

修改/etc/mongod.conf文件。mongoDB默认情况下任何客户端都可以连接27017端口,且没有认证,默认情况下没有管理员帐户。通过修改这个配置文件可以更改为登陆时进行权限认证。mongoDB中如果想要给某个数据库创建一个用户,需要首先进入该数据

说明:1 表示认证成功,0 表示认证失败,认证失败后查看数据库无任何返回。

创建数据库及用户

1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local。local好像没啥用,如果哪位在使用过程中发现了这个local表的用途,希望能够留言提醒,那我们就专心来说说admin表 2. 输入命令:use admin,你会发现该DB下包

创建一个 renwoledb 数据库并授权 renwole 用户为该库的 dbOwner 角色。另外、MongoDB数据库实行注册制,数据库内无内容时,无法查看到新建的数据库,操作如下:

步骤 Step1 你要拿到3台Docker服务器的IP地址,并且将下面给出的IP地址配置到所有的服务器上面,每一台服务器都要执行如下命令(记得要替换掉IP地址哦): root@node *:/# export node1=10.11.32.174 root@node *:/# export node2=10.11.33.37 r

> use renwoledb> db.createUser( { user:"renwole", pwd:"renwolecom", roles:[{role:"dbOwner",db:"renwoledb"}] })

可以,grant select on DB.A to user1@localhost identified by '123

此时已完成了一库一账号的创建。如果创建用户提示无权限,请先使用超级管理员登录之后切换到对应的数据库再创建即可,如下所示:

MongoDB shell version v4.4.0connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("7be9-4c30-ad2e-2a5b58127ab7") }MongoDB server version: 4.4.0> use renwoledbswitched to db renwoledb> db.createUser( { user:"renwole", pwd:"renwolecom", roles:[{role:"dbOwner",db:"renwoledb"}] } )uncaught exception: Error: couldn't add user: command createUser requires authentication :_getErrorWithCode@src/mongo/shell/utils.js:25:13DB.prototype.createUser@src/mongo/shell/db.js:1343:11@(shell):1:1> use adminswitched to db admin> db.auth("root","renwolecompassword")1> use renwoledbswitched to db renwoledb> db.createUser( { user:"renwole", pwd:"renwolecom", roles:[{role:"dbOwner",db:"renwoledb"}] } )Successfully added user: {"user" : "renwole","roles" : [{"role" : "dbOwner","db" : "renwoledb"}]}

添加 root 用户,拥有整个 MongoDB 最高权限,建议取消认证模式后,先进入到 admin 库,再添加 root 用户权限

> use admin> db.createUser({user: "root",pwd: "renwolecom",roles: [ { role: "root", db: "admin" } ]})

密码修改

修改某个账号的数据库密码需要进入到该数据库,认证后再修改,否则报错,操作如下:

> use renwoledb> db.changeUserPassword("renwole", "renwolecompwdnew")> db.auth("renwole","renwolecompwdnew")1

删除用户及数据库

删除用户(必须切换到admin使用最高权限删除某个用户角色)

> db.system.users.remove({user:"renwole"});WriteResult({ "nRemoved" : 1 })

删除所有用户(必须具备超级管理权限才能删除)

> db.system.users.remove({})

删除数据库(必须切换到指定的数据库,然后再删除)

> use renwoledbswitched to db renwoledb> db.dropDatabase(){ "ok" : 1 }>

总结

到此这篇关于MongoDB数据库用户角色和权限管理的文章就介绍到这了,更多相关MongoDB用户角色和权限管理内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网! 您可能感兴趣的文章:mongodb官方的golang驱动基础使用教程分享mongodb 添加用户及权限设置详解浅析MongoDB用户管理mongodb 修改用户密码 2种方法mongodb权限设置之添加管理员、普通用户的方法MongoDB为用户设置访问权限MongoDB快速入门笔记(七)MongoDB的用户管理操作给MongoDB添加用户权限方法分享Windows下MongoDB配置用户权限实例Mongodb如何开启用户访问控制详解

1. 输入命令:show dbs发现内置两数据库名admin名locallocal像没啥用哪位使用程发现local表用途希望32313133353236313431303231363533e58685e5aeb931333363386138能够留言提醒我专说说admin表2. 输入命令:use admin发现该DB包含system.user表呵呵没错表等同于MsSql用户表用存放超级管理员我往面添加超级管理员试试看3. 输入命令:db.addUser('sa','sa')我添加超级管理员用户usernamesapasswordsa即我添加超级管理员咱测试看看咱再连接MongoDB需需要提示输入用户名、密码我先退(ctrl+c)4. 输入命令:use admin5. 输入命令:show collections查看该库所表发现MongoDB并没提示输入用户名、密码奇怪事呢文章始提MongoDB默认设置权限访问限制即我先设置需要权限访问限制咱再看看效设置呢6. 注册表找MongoDB节点ImgPath我修改加入 -auth所示:"D:\Program Files\mongodb\bin\mongod" -dbpath e:\work\data\mongodb\db -logpath e:\work\data\mongodb\log -auth -service7. 输入命令:use admin内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mongodb数据库文档操作方法(必看篇)
  • mongodb教程之基本管理命令
  • mongodb运行日志实现自动分割的方法实例
  • mongodb入门教程之windows下的mongodb数据库安装图解
  • mongodb实战之全文搜索功能
  • mongodb中多表关联查询($lookup)的深入讲解
  • php mongodb gridfs 存储文件的方法详解
  • mongodb最基本命令速查笔记
  • mongodb开启权限认证的方法步骤详解
  • mongo db增删改查命令
  • mongodb中的用户,角色,权限该怎么设计
  • 如何用mongodb设计用户权限表
  • 如何给mongodb管理员权限
  • mongodb 用户权限有哪些
  • 如何给mongodb数据库设置访问权限
  • mongodb 查看账号有哪些权限
  • mongodb怎么开启用户权限
  • mongodb root用户能管理数据库吗
  • mongodb怎么进行权限管理对一个表的权限
  • 如何建立一个含有用户名和密码的mongodb的数据库
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mongodb官方的golang驱动基础使用教程分享mongodb 添加用户及权限设置详解浅析mongodb用户管理mongodb 修改用户密码 2种方法mongodb权限设置之添加管理员、普通用户的方法mongodb为用户设置访问权限mongodb快速入门笔记(七)mongodb的用户管理操作给mongodb添加用户权限方法分享windows下mongodb配置用户权限实例mongodb如何开启用户访问控制详解mongodb数据库文档操作方法(必看篇)mongodb教程之基本管理命令mongodb运行日志实现自动分割的方法实例mongodb入门教程之windows下的mongodb数据库安装图解mongodb实战之全文搜索功能mongodb中多表关联查询($lookup)的深入讲解php mongodb gridfs 存储文件的方法详解mongodb最基本命令速查笔记mongodb开启权限认证的方法步骤详解mongo db增删改查命令mongodb常用操作命令大全mongodb各种查询操作详解mongodb数据库插入、更新和删除操mongodb 数据库操作--备份 还原 mongodb插入数据的3种方法mongodb中使用distinct去重的简单mongodb整库备份与还原以及单个c浅谈mysql和mariadb区别(mariadbmongodb查询操作限制返回字段的方mongodb 实现远程连接mysql和mongodb设计实例对比分析windows或linux系统中备份和恢复mongodb数php中mongodb数据库的连接、添加、修改、mongodb索引知识_动力节点java学院整理mongodb优化心得分享mongodb 修改用户密码 2种方法mongodb批量将时间戳转为通用日期格式示例mongodb中唯一索引(unique)的那些事windows与mac安装mongodb数据库的方法步骤mongodb快速入门笔记(七)mongodb的用户管
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved