﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-anchor110-文章分类-mongdb、redis、memcache、消息队列等</title><link>http://www.blogjava.net/anchor110/category/52309.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 10 Nov 2012 20:56:28 GMT</lastBuildDate><pubDate>Sat, 10 Nov 2012 20:56:28 GMT</pubDate><ttl>60</ttl><item><title>mongo中的模糊查询及单引号字符的使用</title><link>http://www.blogjava.net/anchor110/articles/391149.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Sat, 10 Nov 2012 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/391149.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/391149.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/391149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/391149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/391149.html</trackback:ping><description><![CDATA[
 
示例：<br />video_info dbCollection中的测试数据：{imgPath: "'<a href="http://i4.tdimg.com/154/807/643/p.jpg">http://i4.tdimg.com/154/807/643/p.jpg</a>}<br />需求，请查出imgPath以单引号 &#8217; 开头的所有数据。<br /><br />经试验并测试，得出如下答案：<br />db.video_info.find({imgPath:/^''*/i})<br /><br />总结：<br />1、模糊查询用正则表达式，/^.../i这种形式。<br />2、单引号处理成两个单引号。<br /><img src ="http://www.blogjava.net/anchor110/aggbug/391149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-11-10 20:18 <a href="http://www.blogjava.net/anchor110/articles/391149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>redis 批量删除key（注：转载于http://www.tuicool.com/articles/N7Zvme）</title><link>http://www.blogjava.net/anchor110/articles/390184.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Wed, 24 Oct 2012 10:09:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/390184.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/390184.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/390184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/390184.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/390184.html</trackback:ping><description><![CDATA[<div>Redis 在运行一段时间后，发现有部分的数据确实没有缓存的必要，这时，切换数据库当然是一个办法。还有办法，flush掉所有的数据。     <br />     <br />     flush太危险了。所以。。还是删除key吧，比较安全一点。比如我删除keys "abc:*"的key     <br />     在cli里不能直接操作，但是可以     <br />     ./redis-cli -n 0 keys "abc:*"|xargs ./redis-cli -n 0 del     <br />     这样就可以了。     <br /></div><img src ="http://www.blogjava.net/anchor110/aggbug/390184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-10-24 18:09 <a href="http://www.blogjava.net/anchor110/articles/390184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MongoDB创建数据库</title><link>http://www.blogjava.net/anchor110/articles/386064.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Wed, 22 Aug 2012 12:50:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/386064.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/386064.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/386064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/386064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/386064.html</trackback:ping><description><![CDATA[<div><p>MongoDB创建数据库</p> <p><br /></p>  <p>如下: <br /></p> <p>use **db;</p>  <p>数据库创建完毕。但注意：如果此时什么都不操作而退出的话，此数据库会被系统删除。</p><p>简单操作下，即可永久性创建此数据库，如下：</p><p><div>show collections;&nbsp; ---查看&#8216;表&#8217;</div></p><p>再使用show dbs命令，即可查看到新创建的数据库名。</p></div><img src ="http://www.blogjava.net/anchor110/aggbug/386064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-08-22 20:50 <a href="http://www.blogjava.net/anchor110/articles/386064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MongoDB增加用户、删除用户、修改用户读写权限及只读权限（注：转载于http://www.2cto.com/database/201203/125025.html）</title><link>http://www.blogjava.net/anchor110/articles/385978.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Tue, 21 Aug 2012 14:53:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/385978.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/385978.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/385978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/385978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/385978.html</trackback:ping><description><![CDATA[<div>MongoDB &nbsp;增加用户 删除用户 &nbsp;修改用户 &nbsp;读写权限 只读权限, <div>&nbsp;</div> <div>MongoDB用户权限分配的操作是针对某个库来说的。--这句话很重要。</div> <div>&nbsp;</div> <div>1、 进入ljc <a href="http://www.2cto.com/database/" target="_blank">数据库</a>： &nbsp; &nbsp; &nbsp;</div> <div>use ljc; &nbsp; &nbsp;-www.2cto.com- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--ljc为数据库名称。</div> <div>2、添加用户（读写权限，readOnly--&gt;false）：</div> <div>&nbsp;db.addUser("java","java");</div> <div>3、 查看一下所有的用户</div> <div>db.system.users.find();</div> <div>&nbsp;</div> <div>{ "_id" : ObjectId("4e02a89fb841deb5fda3e5e2"), "user" : "java", "readOnly" : fa</div> <div>lse, "pwd" : "59cf7cc156874cbd35cb00869126f569" }</div> <div>4、用户授权。</div> <div>db.auth("java","java");</div> <div>1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 显示为1 表示授权成功，0表示不成功。</div> <div>&nbsp;</div> <div>5、 添加用户（只读权限，readOnly--&gt;true）：</div> <div>db.addUser("java1","java1",true);</div> <div>&nbsp;</div> <div>db.system.users.find();</div> <div>{ "_id" : ObjectId("4e02a89fb841deb5fda3e5e2"), "user" : "java", "readOnly" : fa</div> <div>lse, "pwd" : "59cf7cc156874cbd35cb00869126f569" }</div> <div>{ "_id" : ObjectId("4e02aae6b841deb5fda3e5e3"), "user" : "java1", "readOnly" : t</div> <div>rue, "pwd" : "fca6bda05c87a72cce0a4a6458d1e266" }</div> <div>注意上面标红的位置的readOnly 只读于可写是有区别的。</div> <div>&nbsp;</div> <div>6、更改密码（为已经存在的用户更改密码）：</div> <div>&nbsp;db.addUser("java","java1");</div> <div>&nbsp;</div> <div>7、删除用户：</div> <div>db.system.users.remove({user:"java1"});</div> <div>&nbsp;</div> <div>关于库权限,如果用户需要全局的权限,可以在admin和local的两个库里添加,但是需要重启库,</div> <div>&nbsp;</div> <div>有待验证。</div> <div>&nbsp;</div> <div>==========================================================================</div> <div>&nbsp;</div> <div>MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限</div> <div>说明:增加用户是针对数据库进行操作</div> <div>1.进入到数据库 use dbname</div> <div>2.针对当前数据库添加用户 权限是针对当前数据</div> <div>1.添加并验证用户</div> <div>&gt; use admin</div> <div>&gt; db.addUser("zjx","tsjianxin")</div> <div>&gt; db.auth("zjx","tsjianxin")</div> <div>2.查看已存在的用户</div> <div>&gt; db.system.users.find()</div> <div>3.现在来给另一个数据库51cv配置一个读写权限的-www.2cto.com-用户</div> <div>&gt; use 51cv</div> <div>&gt; db.addUser("51cvrw","51cv")</div> <div>&nbsp; ..."readOnly" : false...</div> <div>4.配置一个只读权限的用户</div> <div>&gt; use 51cv</div> <div>&gt; db.addUser("51cvr","51cv",true)</div> <div>&gt; db.system.users.find()</div> <div>&nbsp; &nbsp;..."readOnly" : true...</div> <div>5.删除用户</div> <div>&gt; use dbname (admin or 51cv ,etc)</div> <div>&gt; db.system.users.remove({user:"haha"})</div> <div>&gt; db.system.users.find()</div> <div>6.用户登录数据库测试</div> <div>for:mongod dbname -u uname -p password</div> <div>mongo admin -u zjx -p tsjianxin</div></div><img src ="http://www.blogjava.net/anchor110/aggbug/385978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-08-21 22:53 <a href="http://www.blogjava.net/anchor110/articles/385978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MongoDB基本使用（注：转载于http://hi.baidu.com/yangdaming1983/item/27f25de9f6588cc5bbf37d91）</title><link>http://www.blogjava.net/anchor110/articles/385972.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Tue, 21 Aug 2012 13:41:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/385972.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/385972.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/385972.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/385972.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/385972.html</trackback:ping><description><![CDATA[<div><h2>MongoDB基本使用</h2>   <div id="content" mod-cs-content="" text-content=""  clearfix"=""> <p>一、启动：</p><p>./mongod --dbpath=/data/mongodb --port=27017 --logpath=/data/mongodb/logs &amp;</p><p>mongod --dbpath=/data/mongodb --port 27017 --logpath /data/mongodb/logs --auth --bind_ip 127.0.0.1 &amp;</p><p>连接已有的db：mongo 192.168.0.166:27017</p><p>&nbsp;</p><p>查询所有数据库</p>show dbs&nbsp;使用<u><strong>test</strong></u>数据库use test&nbsp;显示test所有表（collections）show collections&nbsp;查询服务器状态db.serverStatus()&nbsp;#只允许某ip访问<br />$ mongod --bind_ip 127.0.0.1<p>#指定服务端口<br />$ mongod --port 27017</p><p>#指定数据存放路径<br />mongod.exe &#8211;port 11111 &#8211;dbpath E:\data\mongodb</p><p>绑定 IP 地址，只有本地才可以访问：</p>mongod --bind_ip 127.0.0.1在设置其它的端口：mongod --bind_ip 127.0.0.1 --port28888添加用户认证：<p>添加用户认证必须在启动 mongod 服务时添加 <strong>--auth</strong> 参数：</p>mongod --bind_ip 127.0.0.1 --port28888--auth<p>注意所有用户的认证信息都保存在每一个数据库的 system.users 集合中。例如：在数据库 projectx 中（就是 use projectx 后）projectx.system.users 会保存所有用户的信息（这里的用户是数据库用户）。</p><p>在最初始的时候 mongodb 都默认有一个 admin 数据库（刚开始是空的），而 admin.system.users 中将会保存比在其它数据库中设置的用户权限跟大的用户信息。</p><p>注 意：当 admin.system.users 中没有添加任一一个用户（即为空）时，即使 mongod 启动时添加了 --auth  参数，即使，在除 admin 数据库中添加了用户，此时不进行任何认证依然可以使用任何操作，知道你在 admin.system.users  中添加了一个用户。<br />如下分别创建两个用户：</p><p>在 projectx 中创建用户名为 user1 密码为 1resu 的用户，如下：</p>$ ./mongo&gt; use projectx&gt; db.addUser("user1","1resu");<p>在 admin 中创建用户名为 root 密码为 toor 的用户，如下：</p>$ ./mongo  &gt; use admin  &gt; db.addUser("root", "toor");  &gt; db.auth("root", "toor");  1<p>^^^^ 如果认证成功会显示 1<br />^^^^ 用以下命令可以查看所有当前选择的数据库的用户信息</p>&gt;  db.system.users.find();  {"_id" : ObjectId("4d761dfc23e14f10be8563c5"),  "user" : "root", "readOnly" : false, "pwd" :  "6a921fa21bbcd22989efecbcb2340d17"}$ ./mongo  &gt; use projectx   switched to db dbtest  &gt; db.aaaa.insert({aa:"xx"});  unauthorized<p>^^^^ 一旦在 admin 数据库中添加了用户，<br />^^^^ 那么对数据库的操作必须进行认证，否则提示 unauthorized</p>&gt; db.auth("user1","1resu");  <br />1<br />&gt; db.aaaa.insert({aa:"xx"});  <br />&gt; db.aaaa.find();  <br />{"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}<p>^^^^ 进行用户认证后就可以插入数据了</p>&gt; use projecty  <br />switched to db projecty  <br />&gt; db.zzz.insert({aa:"xx"});  <br />unauthorized<p>^^^^ 由于用户 user1 只作用于 projectx<br />^^^^ 并没有对 projecty 的操作权限<br />^^^^ 而我们却可以用 admin 库中的用户认证后进行创建，如下</p>&gt; use admin  <br />&gt; db.auth("root","toor");  <br />1<br />&gt; use projecty  <br />switched to db projecty  <br />&gt; db.zzz.insert({aa:"xx"});  <br />&gt; db.zzz.find();  <br />{"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}<p>^^^^ 用 admin 库中的用户认证后就可以创建另一个数据库了<br />^^^^ 所以说明 admin 数据库中的权限很大，如果没有指定 readonly 的话<br />^^^^ 它可以进行任何操作，很危险</p>&gt; use projectx  <br />&gt; db.addUser("user2","2resu", true);  <br />{"user" : "user2",   "readOnly" : true,   "pwd" : "471e31e021a3656044ef3487ea90e0cf"}<p>^^^^ 当一 user2 用户认证时，user2 只能对 projectx 进行只读操作。 </p><p>删除用户<br />&gt; use dbname (admin or 51cv ,etc)<br />&gt; db.system.users.remove({user:"haha"})</p><p>或db.removeUser('name')<br />&gt; db.system.users.find()</p>用户登录数据库测试<br />mongod dbname -u uname -p password<br />如：mongo mailaccess -u mailaccess -p&nbsp;<p>1)&nbsp;&nbsp;&nbsp;&nbsp; 进入数据库admin</p>1use admin<p>2)&nbsp;&nbsp;&nbsp;&nbsp; 增加或修改用户密码</p>1db.addUser('name','pwd')<p>3)&nbsp;&nbsp;&nbsp;&nbsp; 查看用户列表</p>1db.system.users.find()<p>4)&nbsp;&nbsp;&nbsp;&nbsp; 用户认证</p>1db.auth('name','pwd')<p>5)&nbsp;&nbsp;&nbsp;&nbsp; 删除用户</p>1db.removeUser('name')<p>6)&nbsp;&nbsp;&nbsp;&nbsp; 查看所有用户</p>1show users<p>7)&nbsp;&nbsp;&nbsp;&nbsp; 查看所有数据库</p>1show dbs<p>8)&nbsp;&nbsp;&nbsp;&nbsp; 查看所有的collection</p>1show collections<p>9)&nbsp;&nbsp;&nbsp;&nbsp; 查看各collection的状态</p><br />db.printCollectionStats()<p>10)&nbsp;&nbsp; 查看主从复制状态</p><br />db.printReplicationInfo()<p>11)&nbsp;&nbsp; 修复数据库</p><br />db.repairDatabase()<p>12)&nbsp;&nbsp; 设置记录profiling，0=off 1=slow 2=all</p>&nbsp;<br />db.setProfilingLevel(1)<p>13)&nbsp;&nbsp; 查看profiling</p><br />show profile<p>14)&nbsp;&nbsp; 拷贝数据库</p><br />db.copyDatabase('mail_addr','mail_addr_tmp')<p>15)&nbsp;&nbsp; 删除collection</p><br />db.mail_addr.drop()<p>16)&nbsp;&nbsp; 删除当前的数据库</p><br />db.dropDatabase() </div>    <div clearfix"="">  <a href="http://hi.baidu.com/tag/Mongodb/feeds">#Mongodb</a>  </div></div><img src ="http://www.blogjava.net/anchor110/aggbug/385972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-08-21 21:41 <a href="http://www.blogjava.net/anchor110/articles/385972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mongodb源码分析--Replication之OpLog，内含local数据库介绍（注：转载于http://www.cnblogs.com/daizhj/archive/2011/06/27/mongodb_sourcecode_oplog.html）</title><link>http://www.blogjava.net/anchor110/articles/385970.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Tue, 21 Aug 2012 13:31:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/385970.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/385970.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/385970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/385970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/385970.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Mongodb源码分析--Replication之OpLog 	 	&nbsp; &nbsp; &nbsp;  在之前的文章中，介绍了关于master-slave模式下的主从端代码的执行流程，因为当时篇幅所限，未对oplog的数据结构以及mongodb的 local数据库作过多阐述，而这可能会让不知道其内容的朋友看代码时云里雾里找不到头绪，今天我专门用一篇文章来大致解释一下（这些内容可能会在后面章...&nbsp;&nbsp;<a href='http://www.blogjava.net/anchor110/articles/385970.html'>阅读全文</a><img src ="http://www.blogjava.net/anchor110/aggbug/385970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-08-21 21:31 <a href="http://www.blogjava.net/anchor110/articles/385970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MongoDB设置访问权限、设置用户（注：转载于：http://www.cnblogs.com/zengen/archive/2011/04/23/2025722.html）</title><link>http://www.blogjava.net/anchor110/articles/385969.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Tue, 21 Aug 2012 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/385969.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/385969.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/385969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/385969.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/385969.html</trackback:ping><description><![CDATA[<div><h1> 			<a id="cb_post_title_url" href="http://www.cnblogs.com/zengen/archive/2011/04/23/2025722.html">MongoDB设置访问权限、设置用户</a> 		</h1> 		 		 			<div id="cnblogs_post_body"><p>MongoDB已经使用很长一段时间了，基于MongoDB的数据存储也一直没有使用到权限访问（<span style="color: #ff0000;">MongoDB默认设置为无权限访问限制</span>），今天特地花了一点时间研究了一下，研究成果如下：</p> <p><span style="color: #ff0000;">注：研究成果基于Windows平台</span></p> <p>MongoDB在本机安装部署好后</p> <p>1. 输入命令：show dbs，你会发现它内置有两个数据库，一个名为admin，一个名为local。local好像没啥用，如果哪位在使用过程中发现了这个local表的用途，希望能够留言提醒，那我们就专心来说说admin表</p> <p>2. 输入命令：use admin，你会发现该DB下包含了一个system.user表，呵呵，没错，这个表就等同于MsSql中的用户表，用来存放超级管理员的，那我们就往它里面添加一个超级管理员试试看</p> <p>3.  输入命令：db.addUser('sa','sa')，这里我添加一个超级管理员用户，username为sa，password也为sa，即然我们添 加了超级管理员，那咱们就来测试下，看看咱们再次连接MongoDB需不需要提示输入用户名、密码，我们先退出来(ctrl+c)</p> <p>4. 输入命令：use admin</p> <p>5. 输入命令：show collections，查看该库下所有的表，你会发现，MongoDB并没有提示你输入用户名、密码，那就奇怪了，这是怎么回事呢？在文章最开始提到了，</p> <p>MongoDB默认设置为无权限访问限制，即然这样，那我们就先把它设置成为<span style="color: #ff0000;">需要权限访问限制</span>，咱们再看看效果，怎么设置呢？</p> <p>6. 在注册表中，找到MongoDB的节点，在它的ImgPath中，我们修改一下，加入 <span style="color: #ff0000;"><strong>-auth</strong></span>，如下所示：</p> <p>"D:\Program Files\mongodb\bin\mongod" -dbpath&nbsp; e:\work\data\mongodb\db&nbsp; -logpath&nbsp; e:\work\data\mongodb\log <span style="color: #ff0000;"><strong>-auth</strong></span> -service</p> <p>7. 输入命令：use admin</p> <p>8. 输入命令：show collections，呵呵，我们发现无法查看该库下的表了，提示："$err" : "unauthorized  db:admin lock type:-1  client:127.0.0.1"，很明显，提示没有权限，看来关键就在于这里，我们在启动MongoDB时，需要加上<span style="color: #ff0000;"><strong>-auth</strong></span>参数，这样我们设置的权限才能生效，好，接下来我们使用刚刚之前设置的用户名、密码来访问</p> <p>9. 输入命令：db.auth('sa','sa')，输出一个结果值为1，说明这个用户匹配上了，如果用户名、密码不对，会输入0</p> <p>10. 输入命令：show collections，呵呵，结果出来了，到这里，权限设置还只讲到一多半，接着往下讲，我们先退出来(ctrl+c)</p> <p>11. 输入命令：mongo TestDB，我们尝试连接一个新的库（无论这个库是否存在，如果不存在，往该库中添加数据，会默认创建该库），然后，我们想看看该库中的表</p> <p>12. 输入命令：show collections，好家伙，没权限，我们输入上面创建的用户名、密码</p> <p>13. 输入命令：db.auth('sa','sa')，输入结果0，用户不存在，这下有人可能就不明白了，刚刚前面才创建，怎么会不存在呢？原因在于：当我们<strong>单独访问</strong>MongoDB的数据库时，需要权限访问的情况下，用户名密码并非超级管理员，而是该库的system.user表中的用户，注意，我这里说的是<strong>单独访问</strong>的情况，什么是<strong>不单独访问</strong>的情况呢？接下来再讲，现在咋办，没权限，那我们就尝试给库的system.user表中添加用户</p> <p>14. 输入命令：db.addUser('test','111111')，哇靠，仍然提示没有权限，这可咋办，新的数据库使用超级管理员也无法访问，创建用户也没有权限，呵呵，别急，即然设定了超级管理员用户，那它就一定有权限访问所有的库</p> <p>15. 输入命令：use admin</p> <p>16. 输入命令：db.auth('sa','sa')</p> <p>17. 输入命令：use TestDB</p> <p>18. 输入命令：show collections，哈哈，一路畅通无阻，我们发现可以利用超级管理员用户访问其它库了，呵呵，这个就是<strong>不单独访问</strong>的 情况，不难发现，我们是先进入admin库，再转到其它库来的，admin相当于是一个最高级别官员所在区域，如果你是个地产商，想在地方弄个大工程做 做，你想不经过那些高级官员就做，这是行不通的，你需要先去到他们那里，送点礼，再顺着下到地方，工程你就可以拿到手了，此言论仅为个人观点，不代表博客 园；即然工程拿到手了，就要开始建了，那我们不至于每加块砖、添个瓦都得去和那帮高级官员打招呼吧，所以我们得让这个工程合法化，咱们得把相关的手续和证 件弄齐全，不至于是违建</p> <p>19. 输入命令：db.addUser('test','111111')，我们给TestDB库添加一个用户，以后每次访问该库，我都使用刚刚创建的这个用户，我们先退出（ctrl+c）</p> <p>20. 输入命令：mongo TestDB</p> <p>21. 输入命令：show collections，提示没有权限</p> <p>22. 输入命令：db.auth('test','111111')，输出结果1，用户存在，验证成功</p> <p>23. 输入命令：show collections，没再提示我没有权限，恭喜您，成功了</p>  <p>好累啊！一口气写完，呵呵</p> <p>注：当需要使用权限才能访问MongoDB时，如果需要查看MongoDB中所有的库，我们只能通过超级管理员权限，输入命令show dbs来查看了。</p>  </div></div><img src ="http://www.blogjava.net/anchor110/aggbug/385969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-08-21 21:19 <a href="http://www.blogjava.net/anchor110/articles/385969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正确关闭mongodb的方法，转载于http://www.cnblogs.com/buro79xxd/archive/2011/03/23/1993220.html</title><link>http://www.blogjava.net/anchor110/articles/384357.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Mon, 30 Jul 2012 11:55:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/384357.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/384357.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/384357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/384357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/384357.html</trackback:ping><description><![CDATA[<div><h1> 			<a id="cb_post_title_url" href="http://www.cnblogs.com/buro79xxd/archive/2011/03/23/1993220.html">如何正确关闭MongoDB</a> 		</h1> 		 		 			<div><span>由于被同事kill -9后导致MongoDB瘫痪<br /> 错误：Error: error doing query: failed<br /><br /> 首先MongoDB使用mmap方式进行数据文件管理，也就是说写操作基本是在内存中进行，写操作会被每隔60秒(syncdelay设定)的flush 到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。<br /> 如果在flush操作进行时执行kill -9则会造成文件混乱，可能导致数据全丢了，启动时加了repair也无法恢复。<br /><br /> 避免方法<br /> 第一种 使用正确的关闭方法<br /></span></div> <blockquote> <div>官方文档说明要使用 kill -15，killall mongod或者在client的shell里，use admin，执行db.shutdownServer()即可！</div> </blockquote> <div>第二种</div> <blockquote> <div>通过replication 使用 一个slave，或者用replica set 来避免单结点数据丢失。</div> </blockquote> <div>第三种 1.7以后出现类似于binlog的功能</div> <blockquote> <div>在 MongoDB 1.7 版本的最新分支上，就出现了一个新的数据可靠性选项（&#8211;dur）的支持。并且在数据文件修复工具上也有了一些改进。</div> <div></div> <div>如果在启动MongoDB时加上&#8211;dur 则MongoDB 会在进行写操作前记一份日志，这和在其他一些数据库中的binlog 类似，在MongoDB 数据文件损坏的情况下，可以使用此日志来进行恢复。据说其对性能的影响不大。</div> </blockquote></div><img src ="http://www.blogjava.net/anchor110/aggbug/384357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-07-30 19:55 <a href="http://www.blogjava.net/anchor110/articles/384357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>