MongoDb 本机删除密码的方法
Terminal Inflection
AboutErrors Resolved
Linux
Recommended Books
Who Am I?
There are many occasions where you get locked out of a Mongo DB database. It could be that the admin password is unknown, or that the only admin user that exists is “read-only” (something that Mongo permits you to do). Fortunately, it’s fairly straightforward
to remove the admin database safely and recreate the admin user.
Mongo DB has an idiomatic, not to mention pragmatic approach to user authorization. Access to the database is simplified, and not particular granular, with the idea that access control should be passed more to the connecting application itself. Thus, the default
access control is to have no users at all. You need to create an “admin” user account if you want one. Nothing, however enforces this.
One creates an admin user by creating a user on the “admin” database, after logging in to Mongo:
# mongo localhost
MongoDB shell version: 2.0.2
connecting to: localhost/test
> use admin
switched to db admin
> db.addUser("admin","Password")
And that’s it.
Once this user exists, then every time you login to the database, you need to authenticate, like this:
# mongo localhost
MongoDB shell version: 2.0.2
connecting to: localhost/test
> use admin
switched to db admin
mongo> db.auth("admin","Password")
Failure to authenticate will allow you your connection, but no access to any data. Once again, it’s the fact of the existence of the admin user which enforces access control, as well as the following option in the Mongo DB config file:
auth=true
Solution
This solution will focus on removal of the admin user in a replica set, because it’s slightly more complicated, and slightly more interesting. If you’re just running a single node, the procedure is considerably easier. Just ignore the cluster steps.
Stop all Mongo processes running in the replica set. These will probably be running with the command line or config file option of “replSet”. Check by running “ps” or checking the /etc/mongod.conf file.
When no Mongo replicas are running, perform the following procedure on each node in turn. You’ll need to bring the Mongo process up at one point, but it is vital that only one replica is running at any one time, otherwise the configuration will get resynchronised
from another node, and you don’t want that. You want it changed.
On each node
Change to the mongo directory where the data files reside, possibly /var/lib/mongo but specified in the configuration file by the dbPath parameter.
# cd /var/lib/mongo
Move the admin.* files somewhere else to back them up.
# mv /admin.* /tmp
It’s the simple. Deleting these datafiles will have removed the admin credentials from the database.
Start the mongo replica daemon on this single node. Depending on your distribution and how it’s configured, it’s probably something like this:
# /etc/init.d/mongod start
# mongo localhost
MongoDB shell version: 2.0.2
connecting to: localhost/test
> use admin
switched to db admin
> db.addUser("admin","password")
At this point, the admin datafiles should have been recreated. Check that the credentials work:
> db.auth("admin","password")
1
If this returns the numeral “1″, then the login is successful. However, if this is a cluster, the node you’re on may have been marked as stale. To check and fix:
> db.system.users.find()
error: { "$err" : "not master and slaveok=false", "code" : 13435 }
> rs.slaveOk()
not master and slaveok=false
The rs.slaveOk() command will allow you to query normally from the secondary:
SECONDARY> db.system.users.find()
{ "_id" : ObjectId("4fc4972525a7b704e9a3a09e"), "user" : "admin", "readOnly" : false, "pwd" : "2f1bffb1d28a2cca21679103652b1040" }
Now stop mongo, and repeat the above procedure on the other nodes:
# /etc/init.d/mongod stop
When you have updated the admin password on all mongod replicas, restart all nodes in the replica set.
Now, you should find that all nodes have admin user accounts, and that you can use these to authenticate against each one.
Parsons is a freelance Linux specialist who has designed, built and supported Unix and Linux systems in the finance, telecommunications and media industries.
He lives and works in London.
Posted
by Matt
Parsons at 10:44 am Tagged
with: mongo
One Response to “Mongo DB: forcing removal of the admin user”
- sarat says:
Thank you so much. This was very helpful.
Leave a Reply
Name
URI
Your Comment
You may use these HTML tags and attributes: <a
href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Notify
me of follow-up comments by email.
Notify
me of new posts by email.
| Mongo DB Backups with AMANDA |
Recent Posts
- Extract
all sender email addresses from a mailbox with Python - Intercepting
the STDIN and STDOUT of a process with strace - Bash:
having the last word - Directory
tree diff with filename exclusions - Parse
a shell config file in Perl - Mongo
DB Backups with AMANDA - Visualizing
Puppet dependencies - Remove
duplicate lines in a file without sorting
Categories
Technical Notebook
Blogroll
Make a donation
Buy me a beer?
Recommended Reading

Archives
Follow

连接:
http://terminalinflection.com/mongo-db-force-admin-removal/
MongoDb 本机删除密码的方法的更多相关文章
- TypeError: db.addUser is not a function : @(shell):1:1 ——mongoDB创建新用户名密码的方法
不多说,旧版本使用 db.addUser("root","root") 新版本使用这句会出现这个错误提示 TypeError: db.addUser is no ...
- 查看本机的IP地址方法:
查看本机的IP地址方法:对于XP系统:方法一:如果右下角系统托盘区有本地连接的小电脑,双击小电脑→支持,就可以看到本机IP地址.无线连接也是一样.方法二:开始→运行cmd /k ipconfig,IP ...
- (转)mysql账号权限密码设置方法
原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...
- mysql忘记root密码拯救方法(flush privileges)
修改的用户都以root为列.一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password " ...
- Live帐号登陆win8系统不用输密码的方法
win 8 系统旨在让大家日常的操作更加方便与快捷.因此,今天,小编将与大家分享的是如何利用Live帐号登陆win8系统,而不用输密码的方法.具体的步骤如下文所述. 按win+R打开运行输入cmd(在 ...
- VirtualBox虚拟机下Windows登录密码破解方法(阿里云推荐码:1WFZ0V,立享9折!)
VirtualBox虚拟机下Windows登录密码破解方法 近两年虚拟机的发展给开发人员带来了极大便利,安装一个新环境,只需从别人那里copy一份虚拟机文件即可,分分钟搞定.我之前一直在Ubuntu下 ...
- kafka删除topic的方法及我在kafka上边的一些经验
我在本地做kafka的producer调试,每隔一段时间后,所使用的topic管道就会堆积数据,而且我这边使用的是 kafka bin 下的consumer命令单独消费的,每次都是 --fro ...
- dedecms后台添加新变量和删除变量的方法
下面由做网站为大家来介绍dedecms后台添加新变量和删除变量的方法 添加新变量是做什么用的?答:可以在模板内调用的东东. 一.进入网站织梦(Dedecms)后台(以dede5.5为例),依次打开系统 ...
- SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原
sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...
随机推荐
- gulp 安装时一直提示缺少模块( Cannot find module 'gulp-load-plugins')
我们要考虑两种情况? 1. 本地安装和全局安装gulp npm i -g gulp && npm i --save-dev gulp 2.新建package.json,然后手动填写缺少 ...
- 鼠标滚轮实现图片的缩放-------Day79
今天是7月的最后一天了,不得不说,我定下的七月份剩余几天的计划是完不成了.一则工作确实紧了些,再则没能处理好生活.工作和学习的节奏.这才是人生最大的课题吧.只是也还好.至少自己还在坚持着.事实上真的越 ...
- PHP-MySQL,PHP-MySQLi,PDO的差异
PHP-MySQL是PHP操作MySQL数据库最原始的Extension ,PHP-MySQLi的i代表Improvement ,提供了更加高级的功能,就Extension而言,本身也增加了安全性.而 ...
- adb pull 与 push
adb pull <remote> <local> Copies a specified file from an emulator/device instance to yo ...
- Android GUI系统学习1:Gralloc
Gralloc模块是从Android Eclair(android 2.1)開始增加的一个HAL模块,Gralloc的含义为是Graphics Alloc(图形分配).他对上为libui提供服务,为其 ...
- 服务器返回JSON,IE出现下载问题
我向来的观点,IE就是个奇葩. 服务器返回json,chrome处理得好地地,但IE却奇葩地向你请求是否要保存这个JSON文件? 之所以出现这种弱智现象,是因为IE无法识别一个所谓的响应头部:appl ...
- Spring中的AOP(学习笔记)
是什么AOP及实现方式 AOP的基本概念 Schema-base AOP Spring AOP API AspectJ
- Spring Base
1.在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架,曾经有两本很畅销的书<Expert one-on-one J2EE Design and Deve ...
- git format-patch 用法
git format-patch HEAD^ # git format-patch -s 1bbe3c8c197a35f79bfddaba099270a2e54ea9c7 please replace ...
- repo 工具下载 以及 android代码下载【转】
本文转载自:http://www.enjoydiy.com/608.html 我们可以从https://www.codeaurora.org/网站下载android源码. 具体方法如下: 下载repo ...