如何删除mongodb 删除admin中的admin用户

mongodb数据库中创建用户命令-MongoDB-数据库-壹聚教程网mongodb数据库中创建用户命令
在mongodb中创建用户我们可以使用use 用户名就可以了,这个后面根据pwd就是密码了,当然这个不像
mysql创建用户那么复杂了,下面我们看看。
的2进制安装极其简单,按照官方文档的操作来,默认是没有用户认证的&运行效率虽然很高,未免
不太安全。
下面介绍如何使用auth方式来进行用户认证(keyFile方式我还没看..)
1) 不使用 &auth参数,启动 mongodb
2) 创建 User Administrator.
mongodb里面没有root这种超级权限无敌的用户,但是有User Administrator,它可以管理其它用户~~,但
是就没有其它的特殊权限了。
如果一个用户有了userAdminAnyDatabase 权限,它就成为了 User Administrator。
db = db.getSibDB('admin')
db.addUser( { USER: &root&,
&&&&&&&&&&&&& pwd: &123456&,
&&&&&&&&&&&&& roles: [ &userAdminAnyDatabase& ] } )
查看admin库里面的全部用户:
db.system.users.find();
{ &_id& : ObjectId(&xxxxxx&), &pwd& : &xxxxxxxxxxxxxxxxxxxxxxxxxxx&, &roles& : [&
&userAdminAnyDatabase& ], &user& : &root& }
这样就在admin库中添加了一个名为root,密码为123456的User Administrator。
3) 使用 &auth参数启动mongodb
4) 使用User Administrator登录并完成认证。
[root@yw-0-0 logs]# mongo& xxx.xxx.xx.xxx
MongoDB shell version: 2.2.3
connecting TO: xxx.xxx.xx.xxx/test
switched TO db admin
#认证, 1表示成功
& db.auth(&root&, &123456&);
#查看admin库中全部用户:
& db.system.users.find();
{ &_id& : ObjectId(&xxxxxx&), &pwd& : &xxxxxxxxxxxxxxxxxxxxxxxxxxx&, &roles& : [&
&userAdminAnyDatabase& ], &user& : &root& }
#查看全部的表,会提示无权限,因为我们创建的root用户就只有用户管理的权限:
& SHOW TABLES;
Tue Sep 24 10:37:00 EXEC error: src/mongo/shell/query.js:128 error: {
&&&&&&& &$err& : &not authorized for query on cleanmaster.system.namespaces&,
&&&&&&& &code& : 16550
throw &error: & + tojson( ret );
5) 创建其它用户
用户都是跟着库走的,用户信息也会保存到库的system.users表里面。
When adding a user to multiple databases, you must define the user for each database.
#创建用户cm,密码123456, 权限为readWrite和dbAdmin
& db.addUser( { USER: &cm&,pwd: &123456&,roles: [ &readWrite&, &dbAdmin& ]} )
Tue Sep 24 10:53:51 EXEC error: src/mongo/shell/db.js:64 pass can't be empty
throw &password can't be empty&;
这个问题困扰了我好久啊...
后来发现客户端是2.2.3,服务端是2.4.6........
换成最新的客户端就ok了:
& db.addUser( { user: &cm&,pwd: &123456&,roles: [ &readWrite&, &dbAdmin& ]} )
&&&&&&& &USER& : &cm&,
&&&&&&& &pwd& : &f13ef54ec5d213f4eadf1d98&,
&&&&&&& &roles& : [
&&&&&&&&&&&&&&& &readWrite&,
&&&&&&&&&&&&&&& &dbAdmin&
&&&&&&& ],
&&&&&&& &_id& : ObjectId(&ded&)
& db.system.users.find();
{ &_id& : ObjectId(&ded&), &USER& : &cm&, &pwd& :
&f13ef54ec5d213f4eadf1d98&, &roles& : [& &readWrite&,& &dbAdmin& ] }
#使用新用户认证:
& db.auth(&cm&,&123456&);
system.indexes
system.users
6) 修改密码
db = db.getSiblingDB('cm')
#修改新密码为 1-6
db.changeUserPassword(&cm&, &1-6&)
之所以写这篇文章,是因为百度出来的资料都不靠谱啊!
上一页: &&&&&下一页:相关内容后使用快捷导航没有帐号?
查看: 10231|回复: 8
关于MONGODB 用户认证问题
金牌会员, 积分 2206, 距离下一级还需 794 积分
论坛徽章:7
本帖最后由 边城 于
11:35 编辑
1. db.addUser(&user1&,&123&);
2. db.auth(&user1&,&123&);
db.auth 的功能是什么,只看到书上介绍说是用户授权认证。
但一个用户添加后,db.auth 是必须的吗?
我没有执行 db.auth,也可以登录。
下面登录时的一个错误,这个错误是说没有权限执行 getLog: &startupWarnings&。
是什么原因引起的,怎样解决?
[root@localhost bin]# ./mongo mydb&&-port 28011 -u user_my&&-p my123
MongoDB shell version: 2.5.5
connecting to: 127.0.0.1:28011/mydb
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: &startupWarnings& } 为什么我添加一个用户后,登录会出现这个错误呢,
论坛徽章:15
本帖最后由 甘蔗 于
11:41 编辑
我笔记里写的是,“如果出现权限不足的警告,就使用此语句授权”。
so老师在课上也没细说
金牌会员, 积分 2206, 距离下一级还需 794 积分
论坛徽章:7
但我执行了授权后,问题仍然存在,查看日志如下:
T11:46:31.117+0800 [conn12]&&authenticate db: mydb { authenticate: 1, nonce: &xxx&, user: &user_reader&, key: &xxx& }
T11:46:31.120+0800 [conn12] Unauthorized not authorized on admin to execute command { getLog: &startupWarnings& }
T11:46:31.121+0800 [conn12] Unauthorized not authorized on admin to execute command { replSetGetStatus: 1.0, forShell: 1.0 }
T11:47:00.639+0800 [conn11] end connection 127.0.0.1:37366 (1 connection now open)
金牌会员, 积分 2206, 距离下一级还需 794 积分
论坛徽章:7
#1,添加用户:
& use mdsp
switched to db mdsp
& db.addUser(&u1&,&u1&);
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { &user& : &u1&, &roles& : [ &dbOwner& ] }
& db.auth(&u1&,&u1&)
在另一窗口进行登录测试:
#3 刚加完用户后,登录:
[mongo@localhost ~]$ cd $MONGO_HOME/bin
[mongo@localhost bin]$ ./mongo localhost:28001/mdsp -u u1 -p u1
MongoDB shell version: 2.5.5
connecting to: localhost:28001/mdsp
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: &startupWarnings& }
看到这个错误出来了。
#4&&在用户认证后,再登录。问题依然存在:
[mongo@localhost bin]$ ./mongo localhost:28001/mdsp -u u1 -p u1
MongoDB shell version: 2.5.5
connecting to: localhost:28001/mdsp
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: &startupWarnings& }
& version()
金牌会员, 积分 2206, 距离下一级还需 794 积分
论坛徽章:7
今天测试在集群环境下的用户权限测试。
在使用了 db.auth(&root&,&root&) 命令后,
就是服务器没有添加 --auth 启动,
mongo 登录时,也会出没有权限的提示,这可能和上面的授权有关系。联系到上面的话题,大概这命令就是这个功能吧。
下面是遇到的错误提示。希望对大家有启发
在集群环境下,启动参加中也没加AUTH。但我登录时,说没有权限。 错误如下:
[mongo@localhost bin]$ ./mongo -port 28011/admin
MongoDB shell version: 2.5.5
T10:53:18.292+0000 Error: Invalid port number &28011/admin& in connection string &127.0.0.1:28011/admin/test& at src/mongo/shell/mongo.js:135
exception: connect failed
[mongo@localhost bin]$ ./mongo localhost:28011/admin
MongoDB shell version: 2.5.5
connecting to: localhost:28011/admin
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: &startupWarnings& }
rs1:SECONDARY& exit
[mongo@localhost bin]$ ./mongo localhost:28012/admin
MongoDB shell version: 2.5.5
connecting to: localhost:28012/admin
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: &startupWarnings& }
rs1:PRIMARY& use admin
switched to db admin
rs1:PRIMARY&
T10:54:43.063+0000 error: {
& & & & &$err& : &not authorized for query on admin.system.namespaces&,
& & & & &code& : 13
} at src/mongo/shell/query.js:131
rs1:PRIMARY&
看到日志中 有个 user:&__system&,key:&xxx& 这是默认的还是什么?
T10:57:22.688+0000 [conn14] end connection 127.0.0.1:34299 (3 connections now open)
T10:57:22.689+0000 [initandlisten] connection accepted from 127.0.0.1:3 connections now open)
T10:57:22.689+0000 [conn15]&&authenticate db: local { authenticate: 1, nonce: &xxx&, user: &__system&, key: &xxx& }
T10:57:52.696+0000 [conn15] end connection 127.0.0.1:34301 (3 connections now open)
T10:57:52.696+0000 [initandlisten] connection accepted from 127.0.0.1:3 connections now open)
T10:57:52.698+0000 [conn16]&&authenticate db: local { authenticate: 1, nonce: &xxx&, user: &__system&, key: &xxx& }
T10:58:22.704+0000 [conn16] end connection 127.0.0.1:34303 (3 connections now open)
T10:58:22.705+0000 [initandlisten] connection accepted from 127.0.0.1:3 connections now open)
T10:58:22.706+0000 [conn17]&&authenticate db: local { authenticate: 1, nonce: &xxx&, user: &__system&, key: &xxx& }
T10:58:27.666+0000 [clientcursormon] mem (MB) res:69 virt:9643
T10:58:27.666+0000 [clientcursormon]&&mapped (incl journal view):8924
后来在mongod 启动时添加&&--auth
并在登录时 添加 -r -p 进行登录: mongo localhost:28018 -u root -p root
问题解决。
金牌会员, 积分 2206, 距离下一级还需 794 积分
论坛徽章:7
上面理解有误,我也不删除了。把官方的说明加在下面:
如果 MongoDB 服务器启动时使用了 --auth 或 --keyFile 参数,你就必须在进行任何操作前进行认证。 你可以在连接时进行认证。方法是在链接字符串中指定用户名密码,或者在 MongoClient::__construct() 构造函数中指定 &username& 和 &password&。
因为在配置集群时,使用了keyfile的原因,所以必须使用认证登录。
而不是和 db.auth() 命令有关系。
注册会员, 积分 55, 距离下一级还需 145 积分
论坛徽章:2
楼主,我登陆mongodb的时候报的错误和你一样,啥原因呢?
金牌会员, 积分 2206, 距离下一级还需 794 积分
论坛徽章:7
你试试指定到admin 是否能登录。或删除用户,再重新建立试试。具体后来我怎样解决的。已忘记了。MongoDB开启安全模式启用身份验证 - 木子屋
MongoDB开启安全模式启用身份验证
编辑:dnawo 日期:
我将MongoDB用户分为两类:全局用户和库用户。全局用户保存在admin库中,对所有数据库都有访问权限;库用户保存在单个数据库中,只能访问单个库。用户信息保存在哪个库,身份验证时就得到那个库中才能验证。用户信息保存在db.system.users中。创建用户流程为:先在非安全模式下启动数据库,创建全局用户,再停止数据库,在安全模式下重新启动,然后用全局用户登录并进行管理。1.创建用户①.在非安全模式下启动数据库: 程序代码D:\mongodb\bin&mongod --dbpath d:\mongodb\db②.创建全局用户: 程序代码D:\mongodb\bin&mongo localhost/adminMongoDB shell version: 2.0.6connecting to: localhost/admin& db.addUser("admin","666666"){ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }{&&&&&&&&"user" : "admin",&&&&&&&&"readOnly" : false,&&&&&&&&"pwd" : "c37eb0ad0e",&&&&&&&&"_id" : ObjectId("efafcf4143548dbb")}& use testswitched to db test& db.addUser("testadmin","666666"){ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }{&&&&&&&&"user" : "testadmin",&&&&&&&&"readOnly" : false,&&&&&&&&"pwd" : "6a9f421b1d53e01c1cd1",&&&&&&&&"_id" : ObjectId("efafcf4143548dbc")}& db.addUser("testuser","666666",true){ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }{&&&&&&&&"user" : "testuser",&&&&&&&&"readOnly" : true,&&&&&&&&"pwd" : "ac9ffa0bb30e4d3324ec",&&&&&&&&"_id" : ObjectId("5059c80aefafcf4143548dbd")}&说明:testadmin和testuser用户等全局用户登录后再创建也是可以的,注意testuser只有只读权限。2.用户登录①.在安全模式下启动数据库: 程序代码D:\mongodb\bin&mongod --auth --dbpath d:\mongodb\db②.测试是否开启安全模式: 程序代码D:\mongodb\bin&mongoMongoDB shell version: 2.0.6connecting to: test& show collectionsWed Sep 19 21:31:53 uncaught exception: error: {&&&&&&&&"$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",&&&&&&&&"code" : 10057}&③.全局用户登录: 程序代码D:\mongodb\bin&mongoMongoDB shell version: 2.0.6connecting to: test& db.auth("admin","666666")0& use adminswitched to db admin& db.auth("admin","666666")1& use testswitched to db test& show collectionssystem.indexessystem.users&注意:全局用户必须在admin库中才可以验证④.库用户登录: 程序代码D:\mongodb\bin&mongoMongoDB shell version: 2.0.6connecting to: test& db.auth("testadmin","666666")1& show collectionssystem.indexessystem.users&3.修改用户密码 程序代码& db.addUser("admin","777777")4.删除用户 程序代码& db.removeUser("testuser")参考资料[1].Security and Authentication:
上一篇: 下一篇:
评论: 0 | 引用: 0 | 查看次数: 5614
请后再发表评论!
2016年8月日一二三四五六查看: 4270|回复: 0
Mongodb添加和删除访问用户,并配置权限
TA的每日心情开心3&天前签到天数: 57 天[LV.5]常住居民I已加入:&已加入:&
Mongodb添加和删除访问用户,并配置权限
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下:注:研究成果基于Windows平台MongoDB在本机安装部署好后1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,& & 一个名为local。local好像没啥用,如果哪位在使用过程中发现了这个local表的用途,希望能够留言提醒,那我们就专心来说说admin表
2. 输入命令:use admin,你会发现该DB下包含了一个system.user表,呵呵,没错& &,这个表就等同于MsSql中的用户表,用来存放超级管理员的,那我们就往它里面添加一个超级管理员试试看
3. 输入命令:db.addUser('sa','sa'),这里我添加一个超级管理员用户,username为sa,password也为sa& &,即然我们添加了超级管理员,那咱们就来测试下,看看咱们再次连接MongoDB需不需要提示输入用户名、密码,我们先退出来(ctrl+c)
4. 输入命令:use admin
5. 输入命令: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 -service
7. 输入命令:use admin
8. 输入命令:show collections,呵呵,我们发现无法查看该库下的表了,提示:&$err& : &unauthorized db:admin lock type:-1 client:127.0.0.1&,很明显,提示没有权限,看来关键就在于这里,我们在启动MongoDB时,需要加上-auth参数,这样我们设置的权限才能生效,好,接下来我们使用刚刚之前设置的用户名、密码来访问
9. 输入命令:db.auth('sa','sa'),输出一个结果值为1,说明这个用户匹配上了,如果用户名、密码不对,会输入0
10. 输入命令:show collections,呵呵,结果出来了,到这里,权限设置还只讲到一多半,接着往下讲,我们先退出来(ctrl+c)
11. 输入命令:mongo TestDB,我们尝试连接一个新的库(无论这个库是否存在,如果不存在,往该库中添加数据,会默认创建该库),然后,我们想看看该库中的表
12. 输入命令:show collections,好家伙,没权限,我们输入上面创建的用户名、密码
13. 输入命令:db.auth('sa','sa'),输入结果0,用户不存在,这下有人可能就不明白了,刚刚前面才创建,怎么会不存在呢?原因在于:当我们单独访问MongoDB的数据库时,需要权限访问的情况下,用户名密码并非超级管理员,而是该库的system.user表中的用户,注意,我这里说的是单独访问的情况,什么是不单独访问的情况呢?接下来再讲,现在咋办,没权限,那我们就尝试给库的system.user表中添加用户
14. 输入命令:db.addUser('test','111111'),哇靠,仍然提示没有权限,这可咋办,新的数据库使用超级管理员也无法访问,创建用户也没有权限,呵呵,别急,即然设定了超级管理员用户,那它就一定有权限访问所有的库15. 输入命令:use admin
16. 输入命令:db.auth('sa','sa')
17. 输入命令:use TestDB
18. 输入命令:show collections,哈哈,一路畅通无阻,我们发现可以利用超级管理员用户访问其它库了,呵呵,这个就是不单独访问的情况,不难发现,我们是先进入admin库,再转到其它库来的,admin相当于是一个最高级别官员所在区域,如果你是个地产商,想在地方弄个大工程做做,你想不经过那些高级官员就做,这是行不通的,你需要先去到他们那里,送点礼,再顺着下到地方,工程你就可以拿到手了,此言论仅为个人观点,不代表博客园;即然工程拿到手了,就要开始建了,那我们不至于每加块砖、添个瓦都得去和那帮高级官员打招呼吧,所以我们得让这个工程合法化,咱们得把相关的手续和证件弄齐全,不至于是违建
19. 输入命令:db.addUser('test','111111'),我们给TestDB库添加一个用户,以后每次访问该库,我都使用刚刚创建的这个用户,我们先退出(ctrl+c)
20. 输入命令:mongo TestDB
21. 输入命令:show collections,提示没有权限
22. 输入命令:db.auth('test','111111'),输出结果1,用户存在,验证成功
23. 输入命令:show collections,没再提示我没有权限,恭喜您,成功了
好累啊!一口气写完,呵呵注:当需要使用权限才能访问MongoDB时,如果需要查看MongoDB中所有的库,我们只能通过超级管理员权限,输入命令show dbs来查看了。
本帖被以下淘专辑推荐:
& |主题: 8, 订阅: 0
( 豫ICP备号-1)之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB。在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问。想想很不对劲还是设置下用户授权吧。
我部署的环境是windows下MongoDB2.4.8版本。首先要开启安全模式的话,在启动MongoDB服务的时候就要加上--auth参数,命令如下:
D:\mongodb&mongod.exe
这样的话再连接MongoDB操作的时候就需要一定的权限。
一、首先我们需要在没有加"--auth"权限参数启动服务进行用户权限管理
我们这样启动MongoDB服务:
D:\mongodb&mongod.exe
这时不指定用户连接mongodb,是可以登录并操作的,我的操作如下:
MongoDB shell version: 2.4.8
connecting to: test
& show dbs
0.078125GB
可以看到默认显示两个库,我们需要进入admin库进行权限设置(这个时候因为服务没有添加权限参数,所以默认是有权限进行相关设置的)
& use admin
switched to db admin
& db.addUser('sa','sa')
"user" : "sa",
"readOnly" : false,
"pwd" : "c072c6cf699",
"_id" : ObjectId("53af835ada88ac42a40917a0")
& db.system.users.find()
{ "_id" : ObjectId("53af835ada88ac42a40917a0"), "user" : "sa", "readOnly" : false, "pwd" : "c072c6cf699" }
二、我们关掉之前开启的服务,添加"--auth"权限参数,重新启动MongoDB服务
D:\&mongod
我们再次连接并操作:
MongoDB shell version: 2.4.8
connecting to: test
& use admin
switched to db admin
& show collections
Sun Jun 29 11:17:27.103 error: {
"$err" : "not authorized for query on admin.system.namespaces",
"code" : 16550
} at src/mongo/shell/query.js:128
发现如果不加身份信息默认连接的话,是没有权限操作的。我们验证下之前添加的用户,再操作试下:
& db.auth('sa','sa')
1            //返回1表示验证成功,返回0表示验证失败
& show collections
system.indexes
system.users
发现验证成功可以对admin库进行操作了,我们再连接其他库试试:
MongoDB shell version: 2.4.8
connecting to: test
& show collections
Sun Jun 29 11:20:17.996 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" : 16550
} at src/mongo/shell/query.js:128
& db.auth('sa','sa')
Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" }
发现这里验证失败了,之前设置的admin用户验证不管用。查了资料知道必须先从admin登录再use其他库才能被验证通过:
MongoDB shell version: 2.4.8
connecting to: test
& use admin
switched to db admin
& db.auth('sa','sa')
& use test
switched to db test
& show collections
三、添加完顶层admin用户,可以用admin账户进行其他用户的设置
如果想让单独的库有单独的用户名就得先从admin登录然后设置相应的用户信息,具体操作如下:
MongoDB shell version: 2.4.8
connecting to: test
& use admin
switched to db admin
& db.auth('sa','sa')
再次单独登录test试试:
MongoDB shell version: 2.4.8
connecting to: test
& show collections
//未登录没有权限
Sun Jun 29 11:27:52.899 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" : 16550
} at src/mongo/shell/query.js:128
& db.auth('test','test')
//之前设置的账户
//登录成功
& show collections
system.indexes
system.users
四、设置完admin账户后开启带权限参数的MongoDB服务在可视化管理器中管理用户权限
在windows下我使用了MongoVUE可视化管理工具。建立新连接:
之前启动不带auth参数的服务时,不添加用户名密码连接是可以连接的,因为设置了auth参数所以这里必须添加用户名和密码;把上面设置的admin用户sa填入就可以连接上了。 连接上之后打开一个库,里面有个Users设置
这里可以对某一个库进行用户的添加删除修改等操作,这是最高权限的admin视图,如果用test库的test用户登录的话,视图就只能看见test库了
以上就是windows下使用MongoDB在shell和可视化工具中对用户权限设置的简单操作方法。
阅读(...) 评论() &

我要回帖

更多关于 mongodb 删除用户密码 的文章

 

随机推荐