mongoDB-3.x启用认证

孤者浪人 提交于 2020-03-01 07:05:33

mongoDB-3.x启用认证

官方文档:

https://www.mongodb.org/downloads#production

https://docs.mongodb.org/manual/reference/method/js-user-management/

https://docs.mongodb.org/manual/reference/configuration-options/

https://docs.mongodb.org/manual/core/authentication/

 

环境:

CentOS6.5 x64

mongoDB-3.2.0

 

一.创建管理员用户

在启用认证前要先创建制授权用户

use admin

db.createUser(

{

user: "myUserAdmin",

pwd: "abc123",

roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

}

)

 

二.启用认证

命令行启动时加上 --auth 

配置文件

security:

  authorization: enabled

 

三.认证用户登录

mongo --host 192.168.192.10 --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

mongo shell交互式登录

mongoDB-3.x启用认证
注意: 用户是建在mongo内嵌的admin库中,验证时也需指定认证库

说明: 通过mongo shell命令行认证和登录都没问题,但通过第三方gui工具(如robomongo,目前还没适配3.x)可能会报认证失败的错,具体解决方法请参看mongoDB跨平台图形管理工具之robomongo

2015-12-30T18:11:20.019+0800 I ACCESS   [conn7] Failed to authenticate myUserAdmin@admin with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user myUserAdmin@admin

 

个人使用来看,mongoboost还是挺不错的

mongoDB-3.x启用认证
 

mongoDB-3.x启用认证

 

 

======================

(3)使用用刚才的超级帐号登录数据库(admin)mongo localhost:27017admin -u admin  -p admin

现在,我们就可以为其他数据库添加用户了:

比如filedb库

use filedb

db.addUser("xzsp"," xzsp")

授予这个用户的权限:(必须要,否则无法进行读写操作)

db.auth("xzsp "," xzsp")

(4)现在可以用新用户登录并且操作filedb数据库了

 

3.关闭本地例外登录方式

一旦拥有了超级管理员,就可以考虑关闭本地例外方式登录了

方法如下:

重启数据库,启动时候加上--setParameter enableLocalhostAuthBypass=0即可,这样登录的话就必须要用账户认证了

4.删除用户

删除用户要针对某个数据库进行删除

> use filedb

switched to db test

> db.removeUser("xzsp")

5.修改用户密码

普通用户只能修改自己的密码,userAdmin角色帐号可以修改其他用户密码

例如:

mongo 192.168.69.54:40000/admin -u admin -p admin

use filedb

db.changeUserPassword("xzsp","xzsp@123")

 

(3)用管理员账户登录,建立新账户,让他可以读写数据库test

[root@54 ~]# mongo localhost:30000/admin -u superman -p superman

mongos> use test

switched to db test

mongos> db.addUser("test","test")

{

        "user" : "test",

        "readOnly" : false,

        "pwd" : "a6de521abefc2fed4f5876855a3484f5",

        "_id" : ObjectId("51fb5d4ecaa5917203f37f63")

}

mongos> db.auth("test","test")

1

(4)用新帐号test登录,操作数据库test

[root@54 ~]# mongo localhost:30000/test -u test -p test            

MongoDB shell version: 2.4.4

connecting to: localhost:30000/test

> for( var i = 1; i < 100000; i++ ) db.test.insert( { x:i, C_ID:i } );

说明:为分片集群启用认证后,本地例外方式登录由于只具备admin数据库读写权限,无法进行分片操作。对本例来讲,添加分片,查看分片状态等操作都需要用superman帐号登录才行。执行数据库test操作用test帐号,这个帐号就是提供给客户端的帐号。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!