MongoDB 修改用户密码 2种方法

mongodb的用户信息是存放在system.users表中的,修改密码不能直接更新表数据,这样的话,存到表里的密码是明文的,这就不对了。

1,错误做法,直接更新表

Java代码  

  1. > db.system.users.update({"_id" : ObjectId("529e67553992b24438d5e315")},{"user":"tank2","readOnly" : false,"pwd":"123"})  
  2. > db.system.users.find();  
  3. { "_id" : ObjectId("529e5f8474b4c660718a70f3"), "user" : "tank1", "readOnly" : false, "pwd" : "35dd47abff098f5b4f0b567db8edeac5" }  
  4. { "_id" : ObjectId("529e67553992b24438d5e315"), "user" : "tank2", "readOnly" : false, "pwd" : "123" }  //这样就不对了  

 2,正确做法,利用db.addUser

Java代码  

  1. > db.addUser('tank2','111')  
  2. {  
  3.     "_id" : ObjectId("529e6f1c8d95afd190add450"),  
  4.     "user" : "tank2",  
  5.     "readOnly" : false,  
  6.     "pwd" : "6b4334d2c97c526e6a11b2f9ce1996e0"  
  7. }  

有人会问,这个不是添加用户的方法吗。不错这是添加用户的方法,但是如果用户名相同,密码不同的话,就会更新密码。

3,正确做法,利用db.changeUserPassword

Java代码  

  1. > db.changeUserPassword('tank2','test');    

 db的帮助

Java代码  

  1. db.AddUser(username,password)  添加用户  
  2. db.auth(usrename,password)     设置数据库连接验证  
  3. db.cloneDataBase(fromhost)     从目标服务器克隆一个数据库  
  4. db.commandHelp(name)           returns the help for the command  
  5. db.copyDatabase(fromdb,todb,fromhost)  复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址  
  6. db.createCollection(name,{size:3333,capped:333,max:88888})  创建一个数据集,相当于一个表  
  7. db.currentOp()                 取消当前库的当前操作  
  8. db.dropDataBase()              删除当前数据库  
  9. db.eval(func,args)             run code server-side  
  10. db.getCollection(cname)        取得一个数据集合,同用法:db['cname'] or  
  11. db.getCollenctionNames()       取得所有数据集合的名称列表  
  12. db.getLastError()              返回最后一个错误的提示消息  
  13. db.getLastErrorObj()           返回最后一个错误的对象  
  14. db.getMongo()                  取得当前服务器的连接对象get the server  
  15. db.getMondo().setSlaveOk()     allow this connection to read from then nonmaster membr of a replica pair  
  16. db.getName()                   返回当操作数据库的名称  
  17. db.getPrevError()              返回上一个错误对象  
  18. db.getProfilingLevel()         获取profile level  
  19. db.getReplicationInfo()        获得重复的数据  
  20. db.getSisterDB(name)           get the db at the same server as this onew  
  21. db.killOp()                    停止(杀死)在当前库的当前操作  
  22. db.printCollectionStats()      返回当前库的数据集状态  
  23. db.printReplicationInfo()        打印主数据库的复制状态信息  
  24. db.printSlaveReplicationInfo()        打印从数据库的复制状态信息  
  25. db.printShardingStatus()       返回当前数据库是否为共享数据库  
  26. db.removeUser(username)        删除用户  
  27. db.repairDatabase()            修复当前数据库  
  28. db.resetError()  
  29. db.runCommand(cmdObj)          run a database command. if cmdObj is a string, turns it into {cmdObj:1}  
  30. db.setProfilingLevel(level)    设置profile level 0=off,1=slow,2=all  
  31. db.shutdownServer()            关闭当前服务程序  
  32. db.version()                   返回当前程序的版本信息  

 表的帮助,格式,db.表名.help()

Java代码  

  1. db.test.find({id:10})          返回test数据集ID=10的数据集  
  2. db.test.find({id:10}).count()  返回test数据集ID=10的数据总数  
  3. db.test.find({id:10}).limit(2) 返回test数据集ID=10的数据集从第二条开始的数据集  
  4. db.test.find({id:10}).skip(8)  返回test数据集ID=10的数据集从0到第八条的数据集  
  5. db.test.find({id:10}).limit(2).skip(8)  返回test数据集ID=1=的数据集从第二条到第八条的数据  
  6. db.test.find({id:10}).sort()   返回test数据集ID=10的排序数据集  
  7. db.test.findOne([query])       返回符合条件的一条数据  
  8. db.test.getDB()                返回此数据集所属的数据库名称  
  9. db.test.getIndexes()           返回些数据集的索引信息  
  10. db.test.group({key:...,initial:...,reduce:...[,cond:...]})    返回分组信息  
  11. db.test.mapReduce(mayFunction,reduceFunction,<optional params>)  这个有点像存储过程  
  12. db.test.remove(query)                      在数据集中删除一条数据  
  13. db.test.renameCollection(newName)          重命名些数据集名称  
  14. db.test.save(obj)                          往数据集中插入一条数据  
  15. db.test.stats()                            返回此数据集的状态  
  16. db.test.storageSize()                      返回此数据集的存储大小  
  17. db.test.totalIndexSize()                   返回此数据集的索引文件大小  
  18. db.test.totalSize()                        返回些数据集的总大小  
  19. db.test.update(query,object[,upsert_bool]) 在此数据集中更新一条数据  
  20. db.test.validate()                         验证此数据集  
  21. db.test.getShardVersion()                  返回数据集共享版本号  

 

时间: 2024-10-31 20:54:04

MongoDB 修改用户密码 2种方法的相关文章

mongodb 修改用户密码 2种方法_MongoDB

1,错误做法,直接更新表 > db.system.users.update({"_id" : ObjectId("529e67553992b24438d5e315")},{"user":"tank2","readOnly" : false,"pwd":"123"}) > db.system.users.find(); { "_id" :

MongoDB修改数据的2种方法_MongoDB

在MongoDB中,db.collection.ipdate()和db.collection.save()方法都可以修改集合中已存在的文档.db.collection.update()方法对修改提供额外的控制.例如,db.collectoin.update()修改已存在数据或一组匹配查询条件的文档.而db.collection.save()方法根据相同的_id替换一个已存在文档. 使用update()方法修改多个文档: 默认,update()方法更新一条满足条件的文档.调用方法时将multi选项

MySQL 修改用户密码及重置root密码

    为数据库用户修改密码是DBA比较常见的工作之一.对于MySQL用户账户的密码修改,有几种不同的方式,推荐的方式使用加密函数来修改密码.本文主要描述了通过几种不同的方式来修改用户密码以及mysql root账户密码丢失(重置root密码)的处理方法.   1.密码修改的几种方法 a.可以在创建用户的时候指定密码,以及直接使用grant创建用户的时候指定密码. 对于已经存在的用户直接使用grant方式也可以修改密码 如下: --演示版本 root@localhost[(none)]> sho

asp.netC#操作AD修改用户密码的教程

背景 本文的标题是C#操作AD来修改用户密码,其实在微软的API中没有修改密码的方法(我理解的修改密码是需要输入旧密码进行验证),只有重置密码的方法.重置密码的代码大概如下: user.Invoke("SetPassword", new object[] { newPassword }); user.CommitChanges(); 本文主要来谈谈怎样在没有提供修改密码方法的前提下来进行密码的修改,主要是对旧密码的验证. 遇到的问题 C#验证一个AD账户的密码是否正确通常的方式是new

net2.0如何修改用户密码的解决

解决 在net2.0里MemebershipUser类有个ChangePassword的方法,但是他有两个参数,旧密码和新密码,但是问题来了啊,我怎么知道用户的旧密码啊如果我做为管理员要修改用户密码的话,解决办法如下,先给用户ResetPassword代码: MembershipUser user = Membership.GetUser(txtFindUserName.Text.ToString().Trim());        user.UnlockUser();        strin

java-JAVA客户信息保存在user数据表中,设计一个程序,实现修改用户密码的功能。

问题描述 JAVA客户信息保存在user数据表中,设计一个程序,实现修改用户密码的功能. 客户信息保存在user数据表中,设计一个程序,实现修改用户密码的功能. 解决方案 无非就是最简单的数据库读和改.看你用什么数据库搜索 java数据库增删改查 +你用的数据库就能找到现成的代码. 解决方案二: jdbc连接数据库,剩下的,自己学习java如何操作数据库,都是初学者该明白的东西 解决方案三: 首先是链接数据库,然后就是操作数据库,进行修改 解决方案四: 1,在Java中使用JDBC连接数据库co

为VisualSVN Server增加在线修改用户密码的功能

原文:为VisualSVN Server增加在线修改用户密码的功能  附件下载:点击下载 VisualSVN Server是一个非常不错的SVN Server程序,方便,直观,用户管理也异常方便. 不过,它本身并没有提供在线修改密码的功能.由于在实际使用过程中,一旦SVN的用户比较多,只单单依靠windows的管理控制台去修改密码 显然是不太合适的. 总不能任何人想改个密码还要通过管理员吧?所以,就想为其增加在线修改密码的功能. 说实话,网上已经有了可以在线修改密码的方法.试用过,也的确可以.不

Win8.1系统网页无法保存用户密码的解决方法

Win8.1系统网页无法保存用户密码的解决方法: 1.首先我们先检查一下IE是否设置了退出时删除浏览器历史记录的选项,点击工具,打开Internet 选项,然后查看常规页面是否勾选了"退出时删除浏览器历史记录",如果勾选请取消,并点击"设置"按钮,然后将"检查储存的页面的较新版本"设置为[自动],然后确定. 2. 在缓存和数据库选项卡中勾选允许使用网站缓存和数据库. 3.然后退出之前的设置 回到Internet选项界面,点击内容标签,在内容标签里

PHP操作MSSQL存储过程修改用户密码

mssql2008 存储过程 下面可以直接远程修改密码.  代码如下 复制代码 USE [GameUserDB] GO IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[UpdateUserInfo]') and OBJECTPROPERTY(ID, N'IsProcedure') = 1) DROP PROCEDURE [dbo].[UpdateUserInfo] GO CREATE PROCEDURE